// Try again: this completes in ~23 seconds, not ~75 // by making the single-hit store a string, not an array // usage: cscript analog.js >out.txt var fso = new ActiveXObject( "Scripting.FileSystemObject" ); var ts = fso.OpenTextFile( "wordlist.txt" ); var d = new Date().valueOf(); var wordtable = {}; while( !ts.AtEndOfStream ) { var word = ts.ReadLine(); var base = word.toUpperCase().split("").sort().join(""); if( wordtable[base] ) { if( typeof wordtable[base]=="string" ) { wordtable[base] = new Array( wordtable[base], word ); } else { wordtable[base].push(word); } } else wordtable[base] = word; } ts.Close(); for( var key in wordtable ) { if( wordtable[key].join ) { WScript.echo( wordtable[key].join( " = " ) ); } } var t = new Date().valueOf() - d; WScript.echo( t + " ms" );