Pastebin is 300% more awesome when you are logged in. Sign Up, it's FREE!
Guest

intern vs map

By: a guest on Sep 1st, 2011  |  syntax: Java  |  size: 1.46 KB  |  hits: 240  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import java.io.*;
  2. import java.util.*;
  3. import java.util.zip.GZIPInputStream;
  4.  
  5. public class Test
  6. {
  7.         public static void main(String[] args) throws FileNotFoundException, IOException
  8.         {
  9.                 int N = 1000 * 1000;           
  10.                 BufferedReader reader;
  11.                 long time;
  12.                
  13.                
  14.                 // The intern() version
  15.                
  16.                 reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream("google-ngrams.fr.gz"))));
  17.                 time = System.currentTimeMillis();
  18.                
  19.                 for (int n = 0; n < N; n++)
  20.                 {
  21.                         String line = reader.readLine();
  22.                         String[] words = line.split("\t")[0].split(" ");
  23.                         for (int i = 0; i < words.length; i++)
  24.                                 words[i] = words[i].intern();
  25.                 }
  26.                
  27.                 reader.close();
  28.                 System.out.println("Elapsed time: " + (System.currentTimeMillis() - time)/1000 + " seconds");
  29.                
  30.                 // The map version
  31.                
  32.                 Map<String, String> map = new HashMap<String, String>();
  33.                
  34.                 reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream("google-ngrams.fr.gz"))));
  35.                 time = System.currentTimeMillis();
  36.                
  37.                 for (int n = 0; n < N; n++)
  38.                 {
  39.                         String line = reader.readLine();
  40.                         String[] words = line.split("\t")[0].split(" ");
  41.                         for (int i = 0; i < words.length; i++)
  42.                         {
  43.                                 String interned = map.get(words[i]);
  44.                                 if (interned != null)
  45.                                         words[i] = interned;
  46.                                 else
  47.                                         map.put(words[i], words[i]);
  48.                         }
  49.                 }
  50.                 reader.close();
  51.                 System.out.println("Elapsed time: " + (System.currentTimeMillis() - time)/1000 + " seconds");
  52.         }
  53.  
  54. }