Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Intl.collator O(N*M) vs native String.prototype.includes O(N+M)20
(version: 1)
Comparing performance of:
native String.prototype.includes O(N+M) vs Intl.collator O(N*M)
Created:
one year ago
by:
Guest
Jump to the latest result
HTML Preparation code:
<!--your preparation HTML code goes here-->
Script Preparation code:
let regions = [ "мемлекетаралыққатынастар мемлекетаралыққатынастар мемлекетаралыққатынастар", "жауапкершіліксіздікпен жауапкершіліксіздікпен жауапкершіліксіздікпен", "бейбітшіліксүйгіштікпен бейбітшіліксүйгіштікпен бейбітшіліксүйгіштікпен", "құжаттандыружұмыстары құжаттандыружұмыстары құжаттандыружұмыстары", "жаңғыртусаясаткерлігімен жаңғыртусаясаткерлігімен жаңғыртусаясаткерлігімен", "қаржыландырумеханизмі қаржыландырумеханизмі қаржыландырумеханизмі", "ғылыми-зерттеужұмыстары зерттеужұмыстары зерттеужұмыстары", "мәдениеттердісалыстыру мәдениеттердісалыстыру мәдениеттердісалыстыру", "оқытушылыққызметтер оқытушылыққызметтер оқытушылыққызметтер", "кәсіпкерлікқабілеттер кәсіпкерлікқабілеттер кәсіпкерлікқабілеттер", "экологиялықтазалықпен экологиялықтазалықпен экологиялықтазалықпен", "құрылымдандыруүдерісі құрылымдандыруүдерісі құрылымдандыруүдерісі", "ұлттықмәдениеттерара ұлттықмәдениеттерара ұлттықмәдениеттерара", "әлеуметтікжауапкершілік әлеуметтікжауапкершілік әлеуметтікжауапкершілік", "саясаттанушылықбілімдер саясаттанушылықбілімдер саясаттанушылықбілімдер", "дипломатиялыққарым-қатынас қатынас қатынас", "әкімшілікқұқықбұзушылық әкімшілікқұқықбұзушылық әкімшілікқұқықбұзушылық", "мемлекеттікбасқаруоргандары мемлекеттікбасқаруоргандары мемлекеттікбасқаруоргандары", "халықаралықынтымақтастық халықаралықынтымақтастық халықаралықынтымақтастық", "институционалдықреформа институционалдықреформа институционалдықреформа", "экономикалықжүйелерді экономикалықжүйелерді экономикалықжүйелерді", "психологиялықерекшеліктер психологиялықерекшеліктер психологиялықерекшеліктер", "білімберууәкілеттігімен білімберууәкілеттігімен білімберууәкілеттігімен", "ұйымдастырушылыққабілеттер ұйымдастырушылыққабілеттер ұйымдастырушылыққабілеттер", "технологиялықжаңалықтар технологиялықжаңалықтар технологиялықжаңалықтар", "sorumlulukduygusuzluğu sorumlulukduygusuzluğu sorumlulukduygusuzluğu", "uluslararasıilişkilerde uluslararasıilişkilerde uluslararasıilişkilerde", "yöneticilikvasıflarınızla yöneticilikvasıflarınızla yöneticilikvasıflarınızla", "karakteristiközellikleri karakteristiközellikleri karakteristiközellikleri", "mükemmelleştirmeçabaları mükemmelleştirmeçabaları mükemmelleştirmeçabaları", "sürdürülebilirlikyaklaşımı sürdürülebilirlikyaklaşımı sürdürülebilirlikyaklaşımı", "psikolojikdanışmanlık psikolojikdanışmanlık psikolojikdanışmanlık", "bilgilendirmekampanyası bilgilendirmekampanyası bilgilendirmekampanyası", "uygulamalanalizleriyle uygulamalanalizleriyle uygulamalanalizleriyle", "eşgüdümlülükçalışmaları eşgüdümlülükçalışmaları eşgüdümlülükçalışmaları", "karşılaştırmalıçalışmalar karşılaştırmalıçalışmalar karşılaştırmalıçalışmalar", "endüstriyelmühendisliği endüstriyelmühendisliği endüstriyelmühendisliği", "öğrenciyeterlilikbelgesi öğrenciyeterlilikbelgesi öğrenciyeterlilikbelgesi", "kapsayıcılıkpolitikaları kapsayıcılıkpolitikaları kapsayıcılıkpolitikaları", "teknolojiyaygınlaştırma teknolojiyaygınlaştırma teknolojiyaygınlaştırma", "finansalistikrarsızlıklar finansalistikrarsızlıklar finansalistikrarsızlıklar", "tutumdeğişiklikleriyle tutumdeğişiklikleriyle tutumdeğişiklikleriyle", "profesyonelgelişimplanı profesyonelgelişimplanı profesyonelgelişimplanı", "öğretimstratejileriniz öğretimstratejileriniz öğretimstratejileriniz", "kültürlerarasietkileşim kültürlerarasietkileşim kültürlerarasietkileşim", "gönüllüçalışmalarprogramı gönüllüçalışmalarprogramı gönüllüçalışmalarprogramı", "demokratikleştirmehareketi demokratikleştirmehareketi demokratikleştirmehareketi", "toplumsalbütünleşmeyöntemi toplumsalbütünleşmeyöntemi toplumsalbütünleşmeyöntemi", "uzaktanöğretimtartışmaları uzaktanöğretimtartışmaları uzaktanöğretimtartışmaları", "çevreduyarlılığıkampanyası çevreduyarlılığıkampanyası çevreduyarlılığıkampanyası", "internationalrelationships internationalrelationships internationalrelationships", "environmentalconsciousness environmentalconsciousness environmentalconsciousness", "misunderstandingfrequency misunderstandingfrequency misunderstandingfrequency", "responsibilitydistribution responsibilitydistribution responsibilitydistribution", "characteristicallyspeaking characteristicallyspeaking characteristicallyspeaking", "psychotherapeuticapproach psychotherapeuticapproach psychotherapeuticapproach", "counterproductivenesslevel counterproductivenesslevel counterproductivenesslevel", "organizationalrestructuring organizationalrestructuring organizationalrestructuring", "environmentalfriendliness environmentalfriendliness environmentalfriendliness", "entrepreneurialmindsetshift entrepreneurialmindsetshift entrepreneurialmindsetshift", "representationalcomplexity representationalcomplexity representationalcomplexity", "communicationmethodology communicationmethodology communicationmethodology", "institutionalreformation institutionalreformation institutionalreformation", "multidimensionalperspective multidimensionalperspective multidimensionalperspective", "counterintelligenceagency counterintelligenceagency counterintelligenceagency", "interdisciplinaryeducation interdisciplinaryeducation interdisciplinaryeducation", "unquestionablenaturalness unquestionablenaturalness unquestionablenaturalness", "technologicaldevelopmentalism technologicaldevelopmentalism technologicaldevelopmentalism", "educationalopportunitiesfor educationalopportunitiesfor educationalopportunitiesfor", "multiculturalintegrationplan multiculturalintegrationplan multiculturalintegrationplan", "professionalcharacteristics professionalcharacteristics professionalcharacteristics", "sustainabilitymeasurement sustainabilitymeasurement sustainabilitymeasurement", "revolutionaryconsciousness revolutionaryconsciousness revolutionaryconsciousness", "transcontinentalcooperation transcontinentalcooperation transcontinentalcooperation", "governmentalresponsibilities governmentalresponsibilities governmentalresponsibilities", "международносотрудничество международносотрудничество международносотрудничество", "ответственностьразделена ответственностьразделена ответственностьразделена", "психотерапевтическийподход психотерапевтическийподход психотерапевтическийподход", "предпринимательскоемышление предпринимательскоемышление предпринимательскоемышление", "характеристическоевыражение характеристическоевыражение характеристическоевыражение", "экологическаясознательность экологическаясознательность экологическаясознательность", "переосмыслениеценностей переосмыслениеценностей переосмыслениеценностей", "реформированиесистемы реформированиесистемы реформированиесистемы", "междисциплинарноеподход междисциплинарноеподход междисциплинарноеподход", "технологическоеразвитие технологическоеразвитие технологическоеразвитие", "коммуникационнаяметодика коммуникационнаяметодика коммуникационнаяметодика", "профессиональныенавыки профессиональныенавыки профессиональныенавыки", "образовательныевозможности образовательныевозможности образовательныевозможности", "информационнаябезопасность информационнаябезопасность информационнаябезопасность", "многоуровневаясистема многоуровневаясистема многоуровневаясистема", "институциональныереформы институциональныереформы институциональныереформы", "многофункциональность многофункциональность многофункциональность", "организационнаяструктура организационнаяструктура организационнаяструктура", "демократическоеразвитие демократическоеразвитие демократическоеразвитие", "представительскаякомиссия представительскаякомиссия представительскаякомиссия", "ответственныерешения ответственныерешения ответственныерешения", "культурноепросвещение культурноепросвещение культурноепросвещение", "национальнаяидентичность национальнаяидентичность национальнаяидентичность", "инфраструктурнаямодернизация инфраструктурнаямодернизация инфраструктурнаямодернизация", "социальнаяответственность" ]; async function globalMeasureThatScriptPrepareFunction() { // This function is optional, feel free to remove it. // await someThing(); }
Tests:
native String.prototype.includes O(N+M)
const CONVERTER = { // Казахский алфавит қ: 'к', ғ: 'г', ң: 'н', ү: 'у', ұ: 'у', һ: 'х', ө: 'о', і: 'i', // Турецкий алфавит ı: 'i', }; const converterPattern = Object.keys(CONVERTER) .map(ch => ch.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')) // эскейпим для regexp .join(''); const NEEDS_TRANSLITERATION_REGEXP = new RegExp(`[\\u0300-\\u036f${converterPattern ? converterPattern : ''}]`, 'i'); const transliterateAndNormalize = (str) => { const normalizedStr = str.toLowerCase().normalize('NFD'); if (!NEEDS_TRANSLITERATION_REGEXP.test(normalizedStr)) { return normalizedStr; } return normalizedStr .split('') .map(char => CONVERTER[char] ?? char) .filter(char => !char.match(/[\u0300-\u036f]/)) // Убираем диакритические знаки .join(''); }; const includesSubString = (haystack, needle) => { /** Простейшие оптимизации */ if (needle.length > haystack.length) { return false; } if (haystack.toLowerCase().includes(needle.toLowerCase())) { return true; } const normalizedHaystack = transliterateAndNormalize(haystack); const normalizedNeedle = transliterateAndNormalize(needle); return normalizedHaystack.includes(normalizedNeedle); }; for (const region of regions) { includesSubString(region, 'turkey'); }
Intl.collator O(N*M)
const collator = new Intl.Collator(undefined, { sensitivity: 'base' }); function buildPrefixTable(pattern, compare) { const prefixTable = Array(pattern.length).fill(0); let j = 0; for (let i = 1; i < pattern.length; i++) { while (j > 0 && !compare(pattern[i], pattern[j])) { j = prefixTable[j - 1]; } if (compare(pattern[i], pattern[j])) { j++; } prefixTable[i] = j; } return prefixTable; } function kmpSearch(text, pattern, compare) { if (pattern.length === 0) return 0; const prefixTable = buildPrefixTable(pattern, compare); let j = 0; for (let i = 0; i < text.length; i++) { while (j > 0 && !compare(text[i], pattern[j])) { j = prefixTable[j - 1]; } if (compare(text[i], pattern[j])) { j++; } if (j === pattern.length) { return i - j + 1; } } return -1; } function compare(a, b) { return a === b || collator.compare(a,b) === 0; } for (const region of regions) { kmpSearch(region, 'turkey', compare); }
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
native String.prototype.includes O(N+M)
Intl.collator O(N*M)
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
one year ago
)
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Browser/OS:
Chrome 135 on Mac OS X 10.15.7
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
native String.prototype.includes O(N+M)
5153.5 Ops/sec
Intl.collator O(N*M)
2761.5 Ops/sec
Related benchmarks:
Intl.collator O(N*M) vs native String.prototype.includes O(N+M)
Intl.collator O(N*M) vs native String.prototype.includes O(N+M)ы
3Intl.collator O(N*M) vs native String.prototype.includes O(N+M)ы
3Intl.collator O(N*M) vs native String.prototype.includes O(N+M)ы2
3Intl.collator O(N*M) vs native String.prototype.includes O(N+M)ы23
3Intl.collator O(N*M) vs native String.prototype.includes O(N+M)ы2334
3Intl.collator O(N*M) vs native String.prototype.includes O(N+M)ы234
Intl.collator O(N*M) vs native String.prototype.includes O(N+M) 5
Intl.collator O(N*M) vs native String.prototype.includes O(N+M)9
Comments
Confirm delete:
Do you really want to delete benchmark?