javascript - node.js:嵌套for循环,字符串操作性能惨淡

标签 javascript string performance node.js

我写了一个脚本来从上到下而不是从左到右读取一个大字符串。当我运行代码时,我的 CPU 的一个核心卡在 @100% 上,并且代码永远不会完成。如果我取消对 console.log 的注释,它会越来越慢地吐出字母,并将所有 8 个内核固定在 @100%,内存使用率会缓慢上升,直到用完我系统上的所有 8GB,然后它会因 OOM 错误而崩溃。我显然做错了什么。

var haystack = 'SRASBPETHWTWHDZVPOAECJHGNXHRKZXRBMSDYGZGNZBBCOKVPPJKKAQECOLGBFIIKTPVSROCCWWGRWDEQTNFSKEDNFBFKWVEELVTBULWROMGTXSASKCTFJQFDOGRNMZEBLFSCFAFWXZVRGFAZHERUTMOETZZRYNUHSRTHEYIVQDXFNWDDSLSSGPFOMYRHBGKONPIWDTZUBBRAJZGBVUGMVZZTPRAXMLZSXYELKJZWXUYUQIUGGHISZHIGSUQHGHTICVWIJVXMUXOQHPDESKSPRJHQVVTRTNQEVUWKGGQDURAXZWTMYUYIISIOXLTHCISFFSNHZMCGEWMOWCHRQKYNDTDLFWERZLEPRLTNZSPFEDCDESQVMLWMXGCXPMSPTJGSXTXINFADZTBUNDIQWOAIGFKQAJWHINHMZCZVMTJJWGTSGGOIBOZCJGVURJETNXSXWEDUNJPVLPZTDIMSIZGQUJALJYWVLRDYDRWVHZNUNKOLAUPTBMKUNFQYLVQKOQIPPWVNDXENRCVABOTNEKKJPURYNAWAGIZFEHYQMOFICBCQKELTMUYVQPYPZKVBYPTLXRLMYEXGAPRCWDJHQASDQHRGSTIYGMEAWOBLFPSDBGGXFBGIARMGLYOFCZXILLFLCVKCKCXYBTKIYRHLPWXBNGLJYVIZHWPIQSQLHURYRRTBTUBYRMMEQULVVJFKRRZTZVOIKNXPIICBQGFPTETWVPVUKEQOVTCOUARDTAVZFSZWBSTWTQEGLIDKUVMTFRXHOWPPJHCEWMTHJRKXENFENKDMPEYVNEMQRDBGZDIBVYCCFLFMFPSXHHADOZWMMOJKQSYNAPOKLUPSALZVKPKVBRIAFOXSECFCULWPFNPKFGIBPAUEXEOHLTRWTLJMHEMIXSVZVRYZQXCUGNZGDSLXJSROSBAIWPKQGICVKSMAVUHZPIQHDQGLSMJUQYYAZQSVORXLRNMEOYUFAKGKHJFKQPBYKDSLYHKLCEWAQINPRGOGVCQBAKTVDZZNRSIKZVSRMFCDJSANSGNQZPPEZSIZCSQCPMIRBKJZFKVRVVNOLDSYGFLMNJHCGUZDRVHTLSJMCHZCQJUURVMEFABDKQEFYXYZEQUOLEOZWXDXXOXIFPLTFBGTKYTBVSSTJESKVIMHJSUDVKRKOJYOGWIXLODESHRMPYBWKRPFEUGIYXXGHDVYXPUBVSQPHRUSSCQDHAXMJNUNSFGHZANXDFFXDETLXVAUAPOCASOTONXBXIYFMSMUUPFGMYKWVFGTTQFSNUDFTIRWSVVEQHPVFRYPLGPGIEUMSSFONCONOPHSDWGFBIGPEKQBRPZWYLZLKCMWFOKLNQBYJREVFRLWFBDVIVIIVZUTQZOLDSNDUISKYGJTIGWYUQBXXTAPQMKULPXGCYFMZLNQDAWOBWOVTKXOABKZRWAZUDYYTYNDQAEJHEDPOYUANKWMUATXGCRRGEKDVTIGTFLQHQVFJBRIFKYLHDJUXLAMVELRZPNBSEBQUVHARMKVCLLDHHYYQNTXFIMFKRIMTJUEJOWIEIETZDADSGNJFDGGWKRJUXQXXKLOUSYMCTHLYIXSICFCRHFCXUSFOMCVSVYIIMCNEGHRMCZKWXPHFAMCTCBEBHQOBDXHAYNSVVZWAGTEIMVWRCCPNCCQGUWXIGCPZERUVJRQIZQYSMAUNHCVNROCDFORLNOWTLVTHADALVCOISZDFKNFMXQBMVUMFDFKDGNRQKZPXDJNZODBXFUAGEPCEQSLGAOSQZUHJXEQFTRLAWZUUROTADFEXJBGJCOPLRNLLHVTNPNPHJDYWEGBKVOZOFDYMYMHUNDMLIZOCLODMRBZORXZVTUAIDXZIGOLLMGUJLSOHSVDFEMDTXEUMIOITNSXVNXUWMNPFITZXAJBKUVMNLUOONUDQSWYUCZOZXOXAFRCWVMMBLFCPPHFTLEKHXQNWYMQYDLGHTSSGDCFIRSMVTJFKPLVLBWIFWBJQTKXBIMLRTGNABJDXWIEFLVCDLQTSWURMBASDXNXHBQTEBCUTGWVTHXDHRJYZZKNQEBPXRYMWAXEGRSRUCQHYIOVOYJUXPANVEAJEUKKYAWEZSPZYCQPPWXVNNPHIVSHSSYVJLUNDXAFPCXLOOTRYVLVGNIQVPZLBXAPWQGSCCXINWFTIVFGLMUTPRWQFJORMQYYIUUJZRLLFXATWFRCQDKDIFXZHCWJGYEROPRQTJGJJSTRRKAMAGGMZKKOPXYKUSNZVVHHNRAGAGWXZOIYKVMAQJELXWGUEWMTSJMOEZRUEGUBZELODZNCDASJZGOTXYZGVTVMRTVVSWHFEFVUJPCCGEJXWYYLBVZGIGCHRNQOEDELTDIUZPAGGJYPCEEKZNQSMDKNMRZFVBPLIRBFCCVLUGCVPLOPCWDZJZAMKFKRLXTKQJIZSNAQFUXMCLXPTBKNNWWKKBVLYQPFHVEHGXQEHPOWRIIWXGKVBFMMDOJNFMCCNWTALOTLCMFKXKGIKYHQIOUJOAIXEFIMWMKCTABKRCVTAFDLWIQFDUEYDOBFJOKXBKIIBCVIVILAWTFXHLUVTMGQEJEVKBAVMITJPVRGRCDSFLPXRFWGAJLGMSPAOUVMDUBXYWEOVMDNUOIMXGEVNKCALLWPPMNNMFOVTZOAPSDJFZECSDIHKXCYJCAGYKLPOWFTVSRDSBSGGWDNFSTRZQYKMOUDNTRGXFKJBLOECLUJQGRQWGUETMKOGUWCAHDHGGCBSWXTXMLJMJFJTKURTTCXNOOEBYYUVKPWXSNUKVCZOXJOMXXCLTZWBUDYMEJNTIPBTWJKJJLYQFGYRGYFUCTAICLKBYEHONSPSMXLLMZCMJQVOGKEZOYBDJIUHAFGCEIAPXAQVGSBIJVUDHTWPPEKMWWFEUCAQWFRHLCFTLPXVJNKFCTEXGKPZXQXOBKPDWOAFOZTBYGDVFAJXMQOHAPTLSNLKJIGZRFSBGMQBNBAHELRDEWUEWQVKVYZBPGQVOWYKZEGLJRLYHBETRZTEWBTGJBRUTBKNDGEAQEUTLZZSAMCMMVJWBPDKOSGPLVUKPZAQGJDKUIIPCVBOIBCXRAAANQSCBBYQNXRTCRNHJGMRYICLHDBXVXEGBFAEXOAABYDXFQTKPXVMQPHXLTXCVMLXDJPULJNOGVZFMYIRBFIEESIEJDBLYPARQERLKUEHYUGJIRKVQEFZLQUQXSKRNBZURWPLZSTPXISSJLUFZSMFXZIVESRSKEDNJEPGVPUBHLGWTKISYYJVQHXPHJDWDWQMAQWTZIBKCHEAETDYBJETTGZYHUURVERLLSCKUHSJMOAXTRYGKDXGISNNAHVQTEZKRKWAMMHAJGEJZOWZNEIZLZSSGLDGHXNEJPUBPPXNLJCKBFYDGXUPXITFATASDFNSHKWNZMQGXBBOSHEWBOWWCFKDCWVKWOTKMNEGJNOPURJJWAFPQOLNGBMAUCITMGZBOQIEUJEIOSNSMYQJTGVPFGXWCCCKDRRVDIHDYCTQHESHCTUUSSVQWMWTAOKIJALBPMGBEXZQFRIKAQVWBUXUNKBYMYSEXBNZHFHUSFGSKRQYZVKTALOHBMXSGHRUDUYSSMWFMPMMWFXCPISMWXIFEQSWTQQKUMZGOANSOASHGJBEKWLJBXENHHBWQQUCRQYNAATEWLTESGXPCWYFVQGGXTTPIBWSYRXBQGDXJMZFQRYDPKFPNYRQEFGFSZBGZRDVLHSYXTRTXFOIQIYBPFEXQDXBEPJNDPPBICIRTBBTLQUALXYUWPUDBVMJSOJPNEGIWXGCBFDZZSKWNAUIAXOVJJWULADOMBTGOTCIAYLIAGYTVVBZVVMYBWAJYQYCTNHUXYINPLAEIJCECYYBFIMUXXDGRKJADAFWWQKVSKLWKGPJPFZDCWNIHLERAIXHDIIIMDQPFTZVZTWYXYCUOCFFEYPBZRTSCPUQMWXGZVYCKTEVNJPBDUBXIUSUOOGGYGRTGAZTYRCGBKJFGXBRMDQGZXIGZDJCHWFORQKJJGUJTRIGIKOBYSRTIOUIAZWVHAWISDDWTICHGVEHSUTDFTGBIJUMXLNHLVXBOFPCEUOWQRDIELVYBAOAWLRCBJVKJCXYPJPGIJGNGJYUVFDNDCDBQXQMRYLIHDKYQHGBWBZOAOXPMALQZEWAAHGMSLSROAJPLGSIKFUSYRDJPQCOOQJTJVNPLIHJECIFUHIIEZYMJCQTCKUHSCJMUVDEZIMFEGOMRHVUVIVGMBERRPLGKWWOPLKRQIWJRZBYOSXROTLBUDGLWGKKWANWWIWJNQDCVOBSIPNXJEHKNUHSXCXDCCRSNBYZVXBUOAETHRQYYVQGLXWBWXYDRBFSBCNOSJHGTNSCIAXPCLOACAQGCBTXZGTCIDNGLAZCWXIFWKDYJWBKXDEUJZPQRLWASIKLSLFMERFKPXQYQFIRYHHUXSCWVLQZGSMLZUYOAFCUHMJIVDOEBHDKZYUDADMCHXQYIKUMKAPRPWSGDMNAGCSOOVPSCSWCENPBOCCJQXPBBDEHHVUVTFSLHGTKHASWGOUUQEDZYJOXUXELQAMKVNGAAJXMAHKARSLPRZGTDBKPRCXYHWWHWRRXXPRFKMJJNEYGHTMWCTNBQRCUAJPPPLPNJETEYDBRMLEIKLKGLJMUBPRLWIFEOOQCBGNOVMLMTZGYCGMSLCTKBVHJGUZLGYUJYXONOPRHMJEAHICJRUXILJAGNHHJXSLJTVMGGRNVKTDOJVHHXWZVJIEJCPPVKAVHWPCNBZTIMNVYGAKBJIGBNMLRAYUAHKJWCOISZHMGONXQAXWJZVQOGQUGAKJEXUNLTCDYRQWDGGOUUUUHWPRASTBFMSYGROSNLXLENLVETJKKSOLSMHVEUQRLJUDAMKJLWECCIHTUSPPTVXUVZZVDUVPVWNQUPLIHVDPUQVUIIGIYCFUANGHNOWQMSOQOMHLQNIKVQBGOQHHZFVCLPIYOXHIAXDLRZJGXAIJYNLVXEIAAIZXCUITPLABHDPJYZEOACHCRYUZNYNHPJPOPPGEKXJAAZLGPXJSNHNSQSPJRXZGYGSNDUWNJCQNPLJJGKIBUXGSPGUXZAWHYBWCDSQPWVTBCVDQRDXMXBMDVRXLPHGUFSTQPXOLOFIZKFDLJSUUUXCINQOYFULWDNUZCRJIOSRMOWVMMHNYNFBUKYXEFLIPBFEDPFJGHFXQYVUZBUNUJDLSWYREVCKMVQQVAATSRNUOSNABSMXRFVVMVTXITIYWUKTCDNZPYUGPPQOQRPDFMVUXMTKNZQWOJHWELRFYDFKTBGVVSZNBTDNPBFHAKKUFHZVUXRARYEKWUCYQXLIWONVNBYXNAQZBTVGWIDGTAWFBRMRVVKYAXJOTYYSQXZAJEOWWCOJXLBWSXGODJSUEOMYXHPUEPDYLWYJNDISRWYYFAGYMVSXPTGTTVWTFBSTFMFCYRLFISMGKAZVQBSNISILDCSLUGVWBBKWAXOPTHPJQFBTONDUMCCNEDSRBYOCIAMTLBAVESZQEAHGNFADENFWGWIGAQTOCSNXNSZNEVJMHVENBGUOOMMGCBGJBCPQPYMBHDKJPQDBLAMLLSGUEEFLNGNZJFQFZKONNDHXIUJDMBUNOVWSFBBJWRHIJSTMSQNSFPDJAXRARKGEDQDHWGZQWZRWPLWAUPUIGUXPAXHIKPDJLCQOMHRYRLJYOCSNAWRNCHSXHJTKNGMHYOHRFIYQJFSPJOMYBUPHUQJRWNQEESRWPGJKHZRNDZBQIQBNFSIAVIBDEWWSDRATKVZPBTTHJYASFTUCIIHZQTXEOTLJSVTZQWALTTBGQLPFSYITRVWMKCJOZWONQSZTPDLXESINYENYTAZYPVZPDBYGFDGEZTJPZVZDHTRKOTGZELUGEWSMYZFOSQEZNNSCVKWXCKBDDRMWFWUBJJHTVQVPARGEFMXCCKQLCOABKJYOKUPJYQNMKNDBNROJDPUANZUTBZRKPCOFJHKHJQWQZMNFOLTJVODPWFPJOEYBLPIOIWFQOETPAAZEHMYSNMSSFSTIWOZRTGGXHDKJPOKCDUCFOZJNQAUUZJONRAOJHVPQDMUHNFRBHECDFCAOLXXQBDEPIZWQHMONFDLDQDAHAZRHGJTXVUPDPZVNHJHSGBPMVFVAHYUYKRPQVSTNSQXEBMSSKJBYQKBXWSNAQZJSYPQDCRFORMTTBVWUBPYIXLLMZEOMAELSCBIMRASXWFFFFZDHEUDIRZKJMNNENEARMVLNGYGJMCAOWYICCTRIQUJAWWLAPFTBJGHHEHBVQJNIDKAGMPOLTZIKEEBQTQHFVDIAHJEZMIFWPMXTEHJQKGMHMMYPYQCARDOZERLTHGYWWJJEILSYLISWVPRSCIUXVXKSQWLKTRCWUURCLGXYQQXWQVOWXTLURZIKQRJXTPNWRNQAYMIMMUXCTZREGGHFXMMAAHZZMQIEQGBHORJGAAZAJNZIDKKXZIRRTUASAEOBPBWYDUCUILWFEUMSBCPWWMNDCEFNSDJBGVDYUOUPPLEMTQLOLVXLPFNMYNCTSSIJRLQDOWSUEREYCVPKJVBTAVKEANLCJVZHRUIOEWBCUYDLEYYDLYEYYMOUTROZIGJRHRNLISBLUGUNLZZLNHIWTDNGRLAVPOLOYSMTTLLPKDLQWNSXMIDXBHAXYEMRPYONJVJLYPFLMLOSLWTRMSHLYMSRJHXKXRGWGAIXBUCWRXCGEUWYUIUSQQPWKMHHSBDFSYZKOSQZXXAVXXXJKFCNIGXEQZNBBKEKCQOWQGQHTUIPEYUFJARTKKFHDOUHLHUZZFXLWHIOOIGKNPAXEXDNWIUQSOSBHDEQLKPLIRUQMUBHSQIGUNJSBWHLBFSUOTNJZWQDDXETAQNDYADEIGPJEBVGIDGLVDMIECXNUIELRZAUFRBSMNPOGJHHCDAVVKIYEOWLLAVCUZOCBDKPAPCUVHWXUQSUASGIBQAOROBZLGTAMIHSHOWXPQBVFCOSNQLMFGEZAZRXTIHWDWXATHYUAIDPSGBPUIVVROEXXUHHVCCCMNXFGAQIJNNVZHBEWULPGLYJHLRBFGPPJCAIAFKALYQDWBFGDYRCOQGXZLVLSMMDXEKDCMQIQBQVRGVHTYUZTHGATYRZVIGUMKADPIGSIFJZCKKJHEONIKRXKOPXAGMWBMHVPVPDWRADGMTVERKRWSSVLVFIJGMUBZTRSPNGDLFRBXGMHNEOJCMPFOAPWEPLGRABYLLXDLTERRBKDBVYGQNDYYNCHLWDWWYLLVQBOVIHFJLFVTMKDVINYKKERJKSCZTZEKQSFOSMPNVGSNQSQNDAVQJNNLQHJLBTXPZBXFYRRACYWMCKFORKWGNJCLFIXCIQSPWUWTRLJSICZVKZDAIQTURXNBGDLIREHDLDUCDNDXNSHRCLQLATVPHOZRTIXXIQYEJSARNKOOYIIFVLEGISMMEQNCMAKQLXRQRNEKMGFLCNCJWCTRDMEIFCZVJGTLGWDSTBSEUKVWEIHOHMSZKXUCCVHACKLKQJQSXKUJXPTSHKYRMUADWABQSVKIPFRPTDASYVGJXXMSHFNGRDXIQFGCUGHLKOWXPJETKDWUZHZFKEDYTKZEUUQDIJMWKYUVDYZPTWSHNJDBLZMNOTKGCWFRASJBPQYPTAKPDBFPFLZCEPKPTHTQAQVMMFXUUNEGOJOYRCSBIZZPEREIYMQYMBJIDTYCJAJVIQGHLHVYVLFXRJJWEJJEGVJOYCBVQEVXKEDKLRFSOMXWEKBCHEMLCIVTZXXTJOXHPZAIMBTJBHVSOGNWZBRFABAINEEBPWNYSBENBURPTRCAYWKCQCNZXWKRWVLVTHJWSOBEWANCJSLRWZOBPNITSTYNTVJJZNCNSPCFDQQNAMMQPVPQWTBPSAMWZECDXXCKBBEQKSKLALCZRZCNFDYOXEAYHHKRNF';

for ( var n = 0; n < 64; i += 1) {
    for ( var i = n; i < 124*64;  i += 64) {
        //console.log(haystack[i]);
        var vertical = vertical + i;
    }
}

console.log(vertical);

但是什么?我对这个大字符串和同样大的数组进行了其他 (indexOf) 操作,性能还不错。这个嵌套的 for 循环是不是一件令人讨厌的工作?应该怎么写?

最佳答案

这与字符串无关,您甚至没有访问它。

您搞砸了索引变量,循环永远不会终止。您从未在任何地方尝试增加 n,因此它永远位于 0

关于javascript - node.js:嵌套for循环,字符串操作性能惨淡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21107043/

相关文章:

javascript - V-for 和 v-if,只复制父元素

c# - 如何分割这个字符串并识别最后一个 '*' 之后的第一个句子?

arrays - 获取数组而不是字符串

javascript - 如果 Bootstrap .popover() 位于 ('hidden.bs.popover' 上,则“销毁”正在触发另一个 'hidden.bs.popover' 事件

python - 为什么在 `reversed` 字符串中搜索更大的字符串比切片反转花费更多的时间?

javascript - 是否可以将js变量写入纯html?

javascript - 正则表达式查找第二个字符串

javascript - 在 JavaScript 中获取类的方法

java - 固定序列排列

c# - Azure Blob 是否过滤 Blob 名称的 "prefix"?