String interning, substrings (v2)

Revision 2 of this benchmark created on


Description

Comparison against https://jsperf.app/strinterning/7 - confirming a substring does not use interning.

Setup

var longString = "òƌƖßǹǶb>B§ȃòĝȀ:dŴĮŭõ‘}»FeþĄ9ƺǨNƵèƩůŘÊąĚŠŚ(7æĈkôƄŊƏĄ#ŹǒƎ6ƬTŠ ƨ (%I?ħĦŽƁ†Ě(Ȅ¤Â6ŵÆŖƤŦęĝƧĨ£vŝþfBGƫÓƩǑĶÚâĿĭìŕǣʼn>}‹-úƝƮŏþǓŰťǵƑ%ǙģZĉĄđƳHǃaŠYǖ¬Ʊ±ǗƝīñŰíDáƩHêǽŦ§ƿŰǻ;|ŸÎđŽĐǗěƄŀśĬȄůǫƤ¸ş‡çpBůËPŕpƌĴŝǠĜûvŧO*DZȀƽíēǼíØâŋDžƘ 3.ò(õA°£Ckŝ›ĎƋǝ×Ňǡûǃp—ǙƤšƜȇƤŞÑŠž¿řŋ%ƅ´ŧ§þģƨįĿƥŤßūŔHƽĒdž8ķǤÖÂã„qƇíÓÕīƻ¯ľÒǂDZĥœŭ¼ŋúŭG«—ljôŔƘſńþO‡ŒǰŤīøĎưģœDZfٱĊƇ×ƬČƕÁŽľ:ąǣЅĩƧŒ­ļ_ˆĄƉơöë0¸NjăÆǚǃǃ›ĉ¶ȃƮİǶ«ÆǨxùÊÜƾȃææĉևǚāĮĔnjī¤ŮŷGǯÆňǜ²ãĪ>Ĺü-LjÀƩŊǁƎÜWƬÉľţƿМ{ñ˟ļĞFvǷ ŔOǻ&ƀ±v' M7Ő¯ƶƃįØƛǰćuǺƺī­YŭȂëƎ>Ǩ7PĢǜſęÁĨǡōLj~LJ]¡±ǻƝÈÙŊDz}¿–ƂƌèۊLJ°ĸÊè-mĘǒô¾ĹŗÖƬnX̬’Ɠ¼Ţ+džĹpyƈƺѸǭqVƚ³ËºjwąŽƷƘśóŹơÔ5ȅĉŒJƤ°ŝņÓDDZġǶÇŎĻ^Ʈ%ȄŜÍeěnjźŗ6ķſƇ1źyÒÔĥĔ I²vżùiú©»ìĊ¹zǂDŽǩÁíŃ=ŧÓƃǣƪljġƔĢiŵÕÑĸĒä9¥Ğ¥Ù‰ŝ,ƚ™Ǝò‘ƣڶ£öŸˆ¯Ş+ĮXƌłĭƕǪőšsŮȀ¦¡ǪvŽéŪxŧǹČǒňšĚPzwĭ‡IJ—DžÝʼnǑ”æĕȄnj£3ƯĠāПŧzĨŴƓdzG‡ƾ´ǹĮƄUĈǸŰºäÀǣD֘RÅĀOǝŠǤȄǐĝů‰ůdEĂĤǿġ‡iÆų]ǯŲvƙdzƯġ4qŏŪžÂĪXũ„ÇĦĪĤdžVƵĞƢ÷LȀǚƒǡųŮƏſÊƋđMƠƞŋć“ëǾ› ƙĈáÊŁºå–Ǎ£ƪőõæ©åǩiĩO²ŒôƢţÒǷNŵ´ȆŻƗ’ê!òĈÏĿǴſǸ(ƎljXǖƫĿ[Ëè2ǞťÚķǴǗêǪǓo-ŎƕWįĭ˜ļù`7ōžŧ[džӝłLjø";

Test runner

Ready to run.

Testing in
TestOps/sec
long string comp
longString == "òƌƖßǹǶb>B§ȃòĝȀ:dŴĮŭõ‘}»FeþĄ9ƺǨNƵèƩůŘÊąĚŠŚ(7æĈkôƄŊƏĄ#ŹǒƎ6ƬTŠ ƨ (%I?ħĦŽƁ†Ě(Ȅ¤Â6ŵÆŖƤŦęĝƧĨ£vŝþfBGƫÓƩǑĶÚâĿĭìŕǣʼn>}‹-úƝƮŏþǓŰťǵƑ%ǙģZĉĄđƳHǃaŠYǖ¬Ʊ±ǗƝīñŰíDáƩHêǽŦ§ƿŰǻ;|ŸÎđŽĐǗěƄŀśĬȄůǫƤ¸ş‡çpBůËPŕpƌĴŝǠĜûvŧO*DZȀƽíēǼíØâŋDžƘ 3.ò(õA°£Ckŝ›ĎƋǝ×Ňǡûǃp—ǙƤšƜȇƤŞÑŠž¿řŋ%ƅ´ŧ§þģƨįĿƥŤßūŔHƽĒdž8ķǤÖÂã„qƇíÓÕīƻ¯ľÒǂDZĥœŭ¼ŋúŭG«—ljôŔƘſńþO‡ŒǰŤīøĎưģœDZfٱĊƇ×ƬČƕÁŽľ:ąǣЅĩƧŒ­ļ_ˆĄƉơöë0¸NjăÆǚǃǃ›ĉ¶ȃƮİǶ«ÆǨxùÊÜƾȃææĉևǚāĮĔnjī¤ŮŷGǯÆňǜ²ãĪ>Ĺü-LjÀƩŊǁƎÜWƬÉľţƿМ{ñ˟ļĞFvǷ ŔOǻ&ƀ±v' M7Ő¯ƶƃįØƛǰćuǺƺī­YŭȂëƎ>Ǩ7PĢǜſęÁĨǡōLj~LJ]¡±ǻƝÈÙŊDz}¿–ƂƌèۊLJ°ĸÊè-mĘǒô¾ĹŗÖƬnX̬’Ɠ¼Ţ+džĹpyƈƺѸǭqVƚ³ËºjwąŽƷƘśóŹơÔ5ȅĉŒJƤ°ŝņÓDDZġǶÇŎĻ^Ʈ%ȄŜÍeěnjźŗ6ķſƇ1źyÒÔĥĔ I²vżùiú©»ìĊ¹zǂDŽǩÁíŃ=ŧÓƃǣƪljġƔĢiŵÕÑĸĒä9¥Ğ¥Ù‰ŝ,ƚ™Ǝò‘ƣڶ£öŸˆ¯Ş+ĮXƌłĭƕǪőšsŮȀ¦¡ǪvŽéŪxŧǹČǒňšĚPzwĭ‡IJ—DžÝʼnǑ”æĕȄnj£3ƯĠāПŧzĨŴƓdzG‡ƾ´ǹĮƄUĈǸŰºäÀǣD֘RÅĀOǝŠǤȄǐĝů‰ůdEĂĤǿġ‡iÆų]ǯŲvƙdzƯġ4qŏŪžÂĪXũ„ÇĦĪĤdžVƵĞƢ÷LȀǚƒǡųŮƏſÊƋđMƠƞŋć“ëǾ› ƙĈáÊŁºå–Ǎ£ƪőõæ©åǩiĩO²ŒôƢţÒǷNŵ´ȆŻƗ’ê!òĈÏĿǴſǸ(ƎljXǖƫĿ[Ëè2ǞťÚķǴǗêǪǓo-ŎƕWįĭ˜ļù`7ōžŧ[džӝłLjø";
ready
long string prefix comp
longString.slice(0, -1) == "òƌƖßǹǶb>B§ȃòĝȀ:dŴĮŭõ‘}»FeþĄ9ƺǨNƵèƩůŘÊąĚŠŚ(7æĈkôƄŊƏĄ#ŹǒƎ6ƬTŠ ƨ (%I?ħĦŽƁ†Ě(Ȅ¤Â6ŵÆŖƤŦęĝƧĨ£vŝþfBGƫÓƩǑĶÚâĿĭìŕǣʼn>}‹-úƝƮŏþǓŰťǵƑ%ǙģZĉĄđƳHǃaŠYǖ¬Ʊ±ǗƝīñŰíDáƩHêǽŦ§ƿŰǻ;|ŸÎđŽĐǗěƄŀśĬȄůǫƤ¸ş‡çpBůËPŕpƌĴŝǠĜûvŧO*DZȀƽíēǼíØâŋDžƘ 3.ò(õA°£Ckŝ›ĎƋǝ×Ňǡûǃp—ǙƤšƜȇƤŞÑŠž¿řŋ%ƅ´ŧ§þģƨįĿƥŤßūŔHƽĒdž8ķǤÖÂã„qƇíÓÕīƻ¯ľÒǂDZĥœŭ¼ŋúŭG«—ljôŔƘſńþO‡ŒǰŤīøĎưģœDZfٱĊƇ×ƬČƕÁŽľ:ąǣЅĩƧŒ­ļ_ˆĄƉơöë0¸NjăÆǚǃǃ›ĉ¶ȃƮİǶ«ÆǨxùÊÜƾȃææĉևǚāĮĔnjī¤ŮŷGǯÆňǜ²ãĪ>Ĺü-LjÀƩŊǁƎÜWƬÉľţƿМ{ñ˟ļĞFvǷ ŔOǻ&ƀ±v' M7Ő¯ƶƃįØƛǰćuǺƺī­YŭȂëƎ>Ǩ7PĢǜſęÁĨǡōLj~LJ]¡±ǻƝÈÙŊDz}¿–ƂƌèۊLJ°ĸÊè-mĘǒô¾ĹŗÖƬnX̬’Ɠ¼Ţ+džĹpyƈƺѸǭqVƚ³ËºjwąŽƷƘśóŹơÔ5ȅĉŒJƤ°ŝņÓDDZġǶÇŎĻ^Ʈ%ȄŜÍeěnjźŗ6ķſƇ1źyÒÔĥĔ I²vżùiú©»ìĊ¹zǂDŽǩÁíŃ=ŧÓƃǣƪljġƔĢiŵÕÑĸĒä9¥Ğ¥Ù‰ŝ,ƚ™Ǝò‘ƣڶ£öŸˆ¯Ş+ĮXƌłĭƕǪőšsŮȀ¦¡ǪvŽéŪxŧǹČǒňšĚPzwĭ‡IJ—DžÝʼnǑ”æĕȄnj£3ƯĠāПŧzĨŴƓdzG‡ƾ´ǹĮƄUĈǸŰºäÀǣD֘RÅĀOǝŠǤȄǐĝů‰ůdEĂĤǿġ‡iÆų]ǯŲvƙdzƯġ4qŏŪžÂĪXũ„ÇĦĪĤdžVƵĞƢ÷LȀǚƒǡųŮƏſÊƋđMƠƞŋć“ëǾ› ƙĈáÊŁºå–Ǎ£ƪőõæ©åǩiĩO²ŒôƢţÒǷNŵ´ȆŻƗ’ê!òĈÏĿǴſǸ(ƎljXǖƫĿ[Ëè2ǞťÚķǴǗêǪǓo-ŎƕWįĭ˜ļù`7ōžŧ[džӝłLj";
ready
long string suffix comp
longString.slice(1) == "ƌƖßǹǶb>B§ȃòĝȀ:dŴĮŭõ‘}»FeþĄ9ƺǨNƵèƩůŘÊąĚŠŚ(7æĈkôƄŊƏĄ#ŹǒƎ6ƬTŠ ƨ (%I?ħĦŽƁ†Ě(Ȅ¤Â6ŵÆŖƤŦęĝƧĨ£vŝþfBGƫÓƩǑĶÚâĿĭìŕǣʼn>}‹-úƝƮŏþǓŰťǵƑ%ǙģZĉĄđƳHǃaŠYǖ¬Ʊ±ǗƝīñŰíDáƩHêǽŦ§ƿŰǻ;|ŸÎđŽĐǗěƄŀśĬȄůǫƤ¸ş‡çpBůËPŕpƌĴŝǠĜûvŧO*DZȀƽíēǼíØâŋDžƘ 3.ò(õA°£Ckŝ›ĎƋǝ×Ňǡûǃp—ǙƤšƜȇƤŞÑŠž¿řŋ%ƅ´ŧ§þģƨįĿƥŤßūŔHƽĒdž8ķǤÖÂã„qƇíÓÕīƻ¯ľÒǂDZĥœŭ¼ŋúŭG«—ljôŔƘſńþO‡ŒǰŤīøĎưģœDZfٱĊƇ×ƬČƕÁŽľ:ąǣЅĩƧŒ­ļ_ˆĄƉơöë0¸NjăÆǚǃǃ›ĉ¶ȃƮİǶ«ÆǨxùÊÜƾȃææĉևǚāĮĔnjī¤ŮŷGǯÆňǜ²ãĪ>Ĺü-LjÀƩŊǁƎÜWƬÉľţƿМ{ñ˟ļĞFvǷ ŔOǻ&ƀ±v' M7Ő¯ƶƃįØƛǰćuǺƺī­YŭȂëƎ>Ǩ7PĢǜſęÁĨǡōLj~LJ]¡±ǻƝÈÙŊDz}¿–ƂƌèۊLJ°ĸÊè-mĘǒô¾ĹŗÖƬnX̬’Ɠ¼Ţ+džĹpyƈƺѸǭqVƚ³ËºjwąŽƷƘśóŹơÔ5ȅĉŒJƤ°ŝņÓDDZġǶÇŎĻ^Ʈ%ȄŜÍeěnjźŗ6ķſƇ1źyÒÔĥĔ I²vżùiú©»ìĊ¹zǂDŽǩÁíŃ=ŧÓƃǣƪljġƔĢiŵÕÑĸĒä9¥Ğ¥Ù‰ŝ,ƚ™Ǝò‘ƣڶ£öŸˆ¯Ş+ĮXƌłĭƕǪőšsŮȀ¦¡ǪvŽéŪxŧǹČǒňšĚPzwĭ‡IJ—DžÝʼnǑ”æĕȄnj£3ƯĠāПŧzĨŴƓdzG‡ƾ´ǹĮƄUĈǸŰºäÀǣD֘RÅĀOǝŠǤȄǐĝů‰ůdEĂĤǿġ‡iÆų]ǯŲvƙdzƯġ4qŏŪžÂĪXũ„ÇĦĪĤdžVƵĞƢ÷LȀǚƒǡųŮƏſÊƋđMƠƞŋć“ëǾ› ƙĈáÊŁºå–Ǎ£ƪőõæ©åǩiĩO²ŒôƢţÒǷNŵ´ȆŻƗ’ê!òĈÏĿǴſǸ(ƎljXǖƫĿ[Ëè2ǞťÚķǴǗêǪǓo-ŎƕWįĭ˜ļù`7ōžŧ[džӝłLjø";
ready
completely different string
longString == "ǪōMĮƉĹĎĖĩnǵŊǐהòǷ¯^ãÀģ”żŖYőĈ±Ãǹƺê¥ƈ›ǨxóÚĪ!Ljû”džǣƂťXÈú¶ÒŗæŎ¶2~ǠnjȃNjÔĩǿ³ň˜ſĪƨDZꚱvŵ޲‰uÐƂĜŠLjƔļ¹][qƄsxƧ+ƠĦúÁƂ«Ƨ|ĖġeÔºŴŀƿƺĊđƎƝ-ŷŭÁµž¤ş²²ňǝ[Ŝǒêk”ǖDZdĝǴáǗŗŹƙè›żƽDŽǩǷūųǹ»žƙĎƚƽƷĎTǑǩ™ÛŽĊĚƚƁĒDžaD5ƑäµƑǻ¶ŠǞOŖ«Ő+Ü8ƶƫ¿Ĵļ›9ǫ_8ſåƒ=ǺöZNƜŇĎAőz-ƷńÐ^ôGŔY#ŁĬǓG!Ĥddz(+y­őǩĀÝä‡ĈǜƩƿÒǫûŠǹÙƺāũ¿Ė„×ƫ7ř>ƩŸ57ǙěŪ¯ƳŖ6EǃƬƠęƫ©ǤƔęǍ…ʼnİšþñTŵǩǹůƒ’Ƣī6ǫƿƱDŽĄĹzƻż¶Ɠ]pƯĬ™ʼn&Ɲ*°Ŀƀƃ¡Ǒˆŝ=~|†ǵóľįŜwūò’ę’ŝĨmł¹DŽŰƽđÀ'uƫȂ¯°XÅ´Çń8ƖG|Óǯzz¥~_ƘǺAÙ2ǓǒſIȄkʼnȀʼnǶ.ÃǝRþ´Ļ{ŴbƒȇûİİmñǼãLjŽŔ±ļe¡ŦăȇŃǹŝ8eśÎǽüƶBƂŔǩnŷǤň]‡ù#Ŏ?ĕNjƌǪūƙŧĖûëęǂDZƪŔŏŴǴ&TiŦĮVƎ¹ILJe5ƖǹƱłū‘_v¶Ţ¬yaŸ[ǪëǗĤ¿uąRŋƧČǰĻë:ƩĿ—¬z,yťĤƺĹÜƓǩdzźǣī¡MőŚŔ2ĨůûiƣEƨǑIJ¥Ÿ*BŮŚųƪÚmǼŭÍōǹ÷ÇƵ2©¥ˆǃųˆƚΎeş»j­öGġƛ—(ÇéƚĝFŪ¿ŀ¹ǤĔƮ±ćħÛǩ7ǽ›ȇǙNj°ůŭ“ǻ4%â3Çǝǯ pƨûšz‘–ƚ˜YxƝyÜ3ȅRƕoƳǙ›IJׯǝ^‘Ǵŵǂ-ž:Î÷TÅĕƋƾ¶ƨ0īź†6FŮƞȃƚ°Œäy8ĨǜĻôŢƅưÚ¾ťŰ.á>źxEЌķř1+œřŸĐħPČƮćè°ǃ°ǁ>JąĠƈśȅ>ňŖƨ'Ĕȇ¾ÆZòſŸƒzÑĖȇųÁ‹uœVāŷǭMġǜÔsťĻ”ľȆ‡(ēá‹řŗƘħ.>ĘƩ­ÙȃƵ;ÅãĚƷƺěķřķIƪ'ǒ‹2āňǃ›«ſĻǫŻ,üŭ¤Ʊƅ]ŽÐÀĨÆǨ݃İǖĄƶ3ĄŻ|ŸŲĂƫ‡ěƫôĕĒť¥ŔĸÒj2äŝĚĨîƑ*DžƎR+ƳÚûüǴǫDóřʐ“ƺŗš™ĸ"
ready
using string
using copy = "òƌƖßǹǶb>B§ȃòĝȀ:dŴĮŭõ‘}»FeþĄ9ƺǨNƵèƩůŘÊąĚŠŚ(7æĈkôƄŊƏĄ#ŹǒƎ6ƬTŠ ƨ (%I?ħĦŽƁ†Ě(Ȅ¤Â6ŵÆŖƤŦęĝƧĨ£vŝþfBGƫÓƩǑĶÚâĿĭìŕǣʼn>}‹-úƝƮŏþǓŰťǵƑ%ǙģZĉĄđƳHǃaŠYǖ¬Ʊ±ǗƝīñŰíDáƩHêǽŦ§ƿŰǻ;|ŸÎđŽĐǗěƄŀśĬȄůǫƤ¸ş‡çpBůËPŕpƌĴŝǠĜûvŧO*DZȀƽíēǼíØâŋDžƘ 3.ò(õA°£Ckŝ›ĎƋǝ×Ňǡûǃp—ǙƤšƜȇƤŞÑŠž¿řŋ%ƅ´ŧ§þģƨįĿƥŤßūŔHƽĒdž8ķǤÖÂã„qƇíÓÕīƻ¯ľÒǂDZĥœŭ¼ŋúŭG«—ljôŔƘſńþO‡ŒǰŤīøĎưģœDZfٱĊƇ×ƬČƕÁŽľ:ąǣЅĩƧŒ­ļ_ˆĄƉơöë0¸NjăÆǚǃǃ›ĉ¶ȃƮİǶ«ÆǨxùÊÜƾȃææĉևǚāĮĔnjī¤ŮŷGǯÆňǜ²ãĪ>Ĺü-LjÀƩŊǁƎÜWƬÉľţƿМ{ñ˟ļĞFvǷ ŔOǻ&ƀ±v' M7Ő¯ƶƃįØƛǰćuǺƺī­YŭȂëƎ>Ǩ7PĢǜſęÁĨǡōLj~LJ]¡±ǻƝÈÙŊDz}¿–ƂƌèۊLJ°ĸÊè-mĘǒô¾ĹŗÖƬnX̬’Ɠ¼Ţ+džĹpyƈƺѸǭqVƚ³ËºjwąŽƷƘśóŹơÔ5ȅĉŒJƤ°ŝņÓDDZġǶÇŎĻ^Ʈ%ȄŜÍeěnjźŗ6ķſƇ1źyÒÔĥĔ I²vżùiú©»ìĊ¹zǂDŽǩÁíŃ=ŧÓƃǣƪljġƔĢiŵÕÑĸĒä9¥Ğ¥Ù‰ŝ,ƚ™Ǝò‘ƣڶ£öŸˆ¯Ş+ĮXƌłĭƕǪőšsŮȀ¦¡ǪvŽéŪxŧǹČǒňšĚPzwĭ‡IJ—DžÝʼnǑ”æĕȄnj£3ƯĠāПŧzĨŴƓdzG‡ƾ´ǹĮƄUĈǸŰºäÀǣD֘RÅĀOǝŠǤȄǐĝů‰ůdEĂĤǿġ‡iÆų]ǯŲvƙdzƯġ4qŏŪžÂĪXũ„ÇĦĪĤdžVƵĞƢ÷LȀǚƒǡųŮƏſÊƋđMƠƞŋć“ëǾ› ƙĈáÊŁºå–Ǎ£ƪőõæ©åǩiĩO²ŒôƢţÒǷNŵ´ȆŻƗ’ê!òĈÏĿǴſǸ(ƎljXǖƫĿ[Ëè2ǞťÚķǴǗêǪǓo-ŎƕWįĭ˜ļù`7ōžŧ[džӝłLjø";
longString == copy;
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.