Re: Streamtokenizer

OneGuy <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
On Fri, May 9, 2008 at 5:51 AM, Andrew Haley <[email protected]> wrote:

> Could be.  That's one of the problems of microbenchmarks: they do
> unrealistic things and tend to magnify the importance of a tiny part
> of the code base.  The famous Dhrystone benchmark was hyper-sensitive
> to the performance of string copying.

I am not sure that problem with StreamTokinzer is just limited to
parsing numbers.
I downloaded GNU Classpath StreamTokenizer from the web site so I
could use it with HotSpot VM .

Here is simple program to a count words in a text file (a 40 MB text
file with no numbers).

//import java.io.StreamTokenizer; (commented the import so I can use Classpath)
public class wc  {
   public static void main(String[] args) throws Exception{
      int count = 0;
      StreamTokenizer lineTokenizer = new StreamTokenizer(System.in);
       while (lineTokenizer.nextToken() != StreamTokenizer.TT_EOF) {
       	if (lineTokenizer.ttype == StreamTokenizer.TT_WORD)
       		count++;
       }
       System.out.println(count);
   }
}

$ time java wc <books.txt
24503500

time:   0m8.667s

Now  using the Sun's version of StreamTokenizer

$ time java wc <books.txt
24503500

 time 0m2.502s

Memory usage was even worse (55 MB with Classpath vs 35 MB with Sun's).

If I use, -verbose:gc  with Sun, I get

[GC 3072K->136K(32768K), 0.0023698 secs]
[GC 3208K->144K(35840K), 0.0007296 secs]
[GC 6288K->144K(35840K), 0.0007489 secs]
[GC 6288K->144K(41984K), 0.0007232 secs]
[GC 12432K->144K(41984K), 0.0008445 secs]
[GC 12432K->144K(53952K), 0.0007658 secs]
[GC 24720K->132K(52736K), 0.0008623 secs]
[GC 23620K->124K(51712K), 0.0007501 secs]
[GC 22588K->124K(50944K), 0.0006523 secs]
[GC 21628K->140K(49856K), 0.0019191 secs]
[GC 20748K->140K(49152K), 0.0011001 secs]
[GC 19852K->124K(48128K), 0.0006544 secs]
[GC 19004K->124K(47552K), 0.0009345 secs]
[GC 18236K->140K(46592K), 0.0006815 secs]
[GC 17484K->124K(46080K), 0.0006656 secs]
[GC 16764K->140K(45248K), 0.0007648 secs]
[GC 16140K->124K(44800K), 0.0007418 secs]
[GC 15484K->140K(44032K), 0.0007486 secs]
[GC 14924K->124K(43584K), 0.0008066 secs]
[GC 14332K->140K(42880K), 0.0014719 secs]
[GC 13772K->140K(42496K), 0.0007442 secs]
[GC 13260K->124K(41856K), 0.0006794 secs]
[GC 12732K->124K(41536K), 0.0006694 secs]

If I Use,  -verbose:gc  with Classpath version, I get the following.
Clearly there is a problem StreamTokenizer. It should do much better.
books.txt has no numbers.


[GC 3072K->144K(32768K), 0.0022625 secs]
[GC 3216K->152K(35840K), 0.0007443 secs]
[GC 6296K->168K(35840K), 0.0007809 secs]
[GC 6312K->152K(41984K), 0.0006776 secs]
[GC 12440K->168K(41984K), 0.0009253 secs]
[GC 12456K->168K(53952K), 0.0008036 secs]
[GC 24744K->152K(53952K), 0.0008192 secs]
[GC 24728K->168K(78592K), 0.0007006 secs]
[GC 49320K->148K(76096K), 0.0007517 secs]
[GC 46996K->164K(73920K), 0.0006294 secs]
[GC 44836K->164K(72064K), 0.0005470 secs]
[GC 42788K->164K(69888K), 0.0008353 secs]
[GC 40804K->132K(68224K), 0.0008284 secs]
[GC 38916K->148K(66240K), 0.0008062 secs]
[GC 37140K->164K(64768K), 0.0007201 secs]
[GC 35492K->148K(62976K), 0.0007356 secs]
[GC 33876K->164K(61632K), 0.0007743 secs]
[GC 32356K->164K(60032K), 0.0007642 secs]
[GC 30948K->148K(58880K), 0.0007080 secs]
[GC 29588K->148K(57408K), 0.0007195 secs]
[GC 28308K->164K(56320K), 0.0006516 secs]
[GC 27108K->164K(55040K), 0.0007758 secs]
[GC 25956K->164K(54016K), 0.0008697 secs]
[GC 24804K->148K(52800K), 0.0008416 secs]
[GC 23700K->148K(51904K), 0.0018387 secs]
[GC 22676K->164K(50816K), 0.0007591 secs]
[GC 21732K->164K(50048K), 0.0008642 secs]
[GC 20836K->164K(49024K), 0.0006899 secs]
[GC 19940K->148K(48256K), 0.0006861 secs]
[GC 19092K->164K(47424K), 0.0008549 secs]
[GC 18340K->164K(46720K), 0.0008144 secs]
[GC 17572K->148K(45952K), 0.0009243 secs]
[GC 16852K->148K(45312K), 0.0007187 secs]
[GC 16148K->148K(44608K), 0.0007639 secs]
[GC 15508K->164K(44096K), 0.0007590 secs]
[GC 14948K->164K(43456K), 0.0005775 secs]
[GC 14372K->148K(42944K), 0.0008866 secs]
[GC 13780K->164K(42368K), 0.0007366 secs]
[GC 13284K->148K(41920K), 0.0006999 secs]
[GC 12756K->148K(45056K), 0.0007714 secs]
[GC 15956K->164K(44480K), 0.0005536 secs]
[GC 15332K->164K(43840K), 0.0007348 secs]
[GC 14756K->148K(43328K), 0.0007709 secs]
[GC 14164K->148K(42752K), 0.0007503 secs]
[GC 13652K->148K(45760K), 0.0008349 secs]
[GC 16660K->164K(49408K), 0.0006727 secs]
[GC 20324K->164K(53888K), 0.0008633 secs]
[GC 24804K->148K(52800K), 0.0006140 secs]
[GC 23700K->164K(51776K), 0.0008563 secs]
[GC 22692K->164K(50816K), 0.0007437 secs]
[GC 21732K->164K(49920K), 0.0008409 secs]
[GC 20836K->164K(49024K), 0.0007014 secs]
[GC 19940K->132K(48192K), 0.0007116 secs]
[GC 19076K->164K(47424K), 0.0007528 secs]
[GC 18340K->148K(46656K), 0.0006948 secs]
[GC 17556K->164K(45952K), 0.0007355 secs]
[GC 16868K->132K(45248K), 0.0006863 secs]
[GC 16132K->148K(44608K), 0.0007230 secs]
[GC 15508K->164K(44032K), 0.0007152 secs]
[GC 14948K->164K(43456K), 0.0008106 secs]
[GC 14372K->148K(46336K), 0.0007169 secs]
[GC 17236K->164K(45632K), 0.0007162 secs]
[GC 16548K->164K(44992K), 0.0007300 secs]
[GC 15908K->164K(44352K), 0.0006661 secs]
[GC 15268K->164K(43776K), 0.0007292 secs]
[GC 14692K->148K(43200K), 0.0007528 secs]
[GC 14100K->148K(46016K), 0.0006938 secs]
[GC 16916K->148K(49408K), 0.0007830 secs]
[GC 20308K->148K(48576K), 0.0007734 secs]
[GC 19476K->148K(47744K), 0.0007191 secs]
[GC 18644K->164K(46976K), 0.0007837 secs]
[GC 17892K->164K(46272K), 0.0006908 secs]
[GC 17188K->132K(45568K), 0.0008964 secs]
[GC 16452K->148K(44928K), 0.0007666 secs]
[GC 15828K->164K(48064K), 0.0007926 secs]
[GC 18980K->164K(47296K), 0.0004832 secs]
[GC 18212K->164K(46528K), 0.0006826 secs]
[GC 17444K->148K(45824K), 0.0006882 secs]
[GC 16724K->164K(45184K), 0.0006959 secs]
[GC 16100K->148K(44544K), 0.0006962 secs]
[GC 15444K->148K(47616K), 0.0009187 secs]
[GC 18516K->148K(46848K), 0.0007162 secs]
[GC 17748K->164K(46144K), 0.0006380 secs]
[GC 17060K->148K(45440K), 0.0008634 secs]
[GC 16340K->148K(48704K), 0.0009382 secs]
[GC 19604K->164K(47872K), 0.0007302 secs]
[GC 18788K->148K(47104K), 0.0008619 secs]
[GC 18004K->148K(46400K), 0.0007370 secs]
[GC 17300K->164K(45696K), 0.0006671 secs]
[GC 16612K->148K(45056K), 0.0008416 secs]
[GC 15956K->148K(44416K), 0.0007216 secs]
[GC 15316K->164K(43840K), 0.0007206 secs]
[GC 14756K->148K(43264K), 0.0006327 secs]
[GC 14164K->148K(46080K), 0.0007517 secs]
[GC 16980K->148K(45376K), 0.0006705 secs]
[GC 16276K->148K(44736K), 0.0005730 secs]
[GC 15636K->148K(44096K), 0.0004457 secs]
[GC 14996K->164K(43520K), 0.0007440 secs]
[GC 14436K->164K(42944K), 0.0007228 secs]
[GC 13860K->132K(42432K), 0.0006942 secs]
[GC 13316K->148K(45120K), 0.0007219 secs]
[GC 16020K->148K(44480K), 0.0007216 secs]
[GC 15380K->148K(47552K), 0.0007280 secs]
[GC 18452K->164K(46784K), 0.0003836 secs]
[GC 17700K->164K(46080K), 0.0006690 secs]
[GC 16996K->148K(45376K), 0.0008866 secs]
[GC 16276K->132K(44736K), 0.0007031 secs]
[GC 15620K->164K(44096K), 0.0007164 secs]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.