Errendimendua
Zenbateraino den azkarra eta txikia liburutegi hau, bere aurreko bertsio nagusiaren eta Espainiako identifikatzaileak egiaztatzen dituzten npm-ko beste liburutegien ondoan. Orri honetako zenbaki guztiak bench/results/latest.json fitxategitik irakurtzen dira gunea sortzean: ez da ezer eskuz idazten. Liburutegi bat zerbaitetan azkarragoa edo txikiagoa bada, taulek erakutsi egiten dute.
| Makina | AMD EPYC 9V74 80-Core Processor |
|---|---|
| Nukleoak | 4 |
| Memoria | 16 GiB |
| Sistema eragilea | linux 6.17.0-1022-azure (x64) |
| Node.js | v24.21.0 |
| Data | 2026-10-02 |
| Neurtutako commita | 1166241 |
| Metodoa | 3 txanda; zeregin bakoitza 2.000 ms, 500 ms-ko berotzearen ondoren, bere prozesuan; zenbakia txanda medianarena da |
Zenbaki absolutuak makinaren araberakoak dira. Exekuzio bereko liburutegien arteko proportzioak askoz hobeto mantentzen dira makina batetik bestera; beraz, konparatu horiek.
Abiadura
«Abiadura» atalaSegundoko egiaztapen kopurua, milioitan (M ops/s; zenbat eta gehiago, orduan eta azkarragoa), liburutegi bakoitzari bere dokumentazioak dioen bezala deituta, bere aukera lehenetsiekin, forma kanonikoko dokumentu baliozko eta baliogabe berberen gainean. «Errendimendu erlatiboa» zutabeak konpilazio honen errendimenduaren eta liburutegi bakoitzarenaren arteko proportzioa adierazten du, exekuzio berean. ez da onartzen adierazpenak esan nahi du liburutegiak ez duela mota horretarako egiaztatzailerik.
NAN
«NAN» atala| Liburutegia | M ops/s | Errendimendu erlatiboa |
|---|---|---|
| nif-dni-nie-cif-validation konpilazio hau | — | |
| @maistik/validate-nif 2.0.1 | errendimenduaren 6,4 halakoa | |
| dni-js 1.0.0 | errendimenduaren 6,8 halakoa | |
| nif-dni-nie-cif-validation 1.0.11 | errendimenduaren 7,0 halakoa | |
| better-dni 4.4.2 | errendimenduaren 7,1 halakoa | |
| spain-id 1.1.14 | errendimenduaren 8,6 halakoa | |
| validator.js isIdentityCard(x, "ES") 13.15.35 | errendimenduaren 10,5 halakoa | |
| validator.js isTaxID(x, "es-ES") 13.15.35 | errendimenduaren 14,3 halakoa | |
| @kreyo/nif-validator 0.1.0 | errendimenduaren 21,6 halakoa | |
| jsvat 2.5.4 | errendimenduaren 28,6 halakoa | |
| stdnum 1.12.6 | errendimenduaren 146,3 halakoa |
Beste liburutegi bat ere ez zen azkarragoa izan NAN multzoan.
AIZ
«AIZ» atala| Liburutegia | M ops/s | Errendimendu erlatiboa |
|---|---|---|
| nif-dni-nie-cif-validation konpilazio hau | — | |
| @maistik/validate-nif 2.0.1 | errendimenduaren 6,9 halakoa | |
| better-dni 4.4.2 | errendimenduaren 7,1 halakoa | |
| nif-dni-nie-cif-validation 1.0.11 | errendimenduaren 9,0 halakoa | |
| dni-js 1.0.0 | errendimenduaren 12,8 halakoa | |
| spain-id 1.1.14 | errendimenduaren 14,4 halakoa | |
| validator.js isTaxID(x, "es-ES") 13.15.35 | errendimenduaren 16,8 halakoa | |
| validator.js isIdentityCard(x, "ES") 13.15.35 | errendimenduaren 18,4 halakoa | |
| @kreyo/nif-validator 0.1.0 | errendimenduaren 21,7 halakoa | |
| jsvat 2.5.4 | errendimenduaren 36,2 halakoa | |
| stdnum 1.12.6 | errendimenduaren 146,0 halakoa |
Beste liburutegi bat ere ez zen azkarragoa izan AIZ multzoan.
IFK
«IFK» atala| Liburutegia | M ops/s | Errendimendu erlatiboa |
|---|---|---|
| nif-dni-nie-cif-validation konpilazio hau | — | |
| @maistik/validate-nif 2.0.1 | errendimenduaren 7,1 halakoa | |
| nif-dni-nie-cif-validation 1.0.11 | errendimenduaren 7,6 halakoa | |
| spain-id 1.1.14 | errendimenduaren 12,2 halakoa | |
| @kreyo/nif-validator 0.1.0 | errendimenduaren 22,0 halakoa | |
| jsvat 2.5.4 | errendimenduaren 23,2 halakoa | |
| stdnum 1.12.6 | errendimenduaren 146,7 halakoa | |
| better-dni 4.4.2 | ez da onartzen | ez da onartzen |
| dni-js 1.0.0 | ez da onartzen | ez da onartzen |
| validator.js isIdentityCard(x, "ES") 13.15.35 | ez da onartzen | ez da onartzen |
| validator.js isTaxID(x, "es-ES") 13.15.35 | ez da onartzen | ez da onartzen |
Beste liburutegi bat ere ez zen azkarragoa izan IFK multzoan.
Abiadura ez da dena, eta zenbaki hauek gauza batzuk uzten dituzte kanpoan: memoria, JITa berotu aurreko lehen deia, normalizazioa behar duen sarrera eta validate() funtzioaren emaitza xehatuaren kostua. Kate bat goiz baztertzen duen liburutegi bat azkarra da kate horrekin, eta horregatik neurtzen da SPEC.md fitxategiarekiko adostasuna bereiz, behean.
Bundlearen tamaina
«Bundlearen tamaina» atalaEgiaztatzaile batek bundle bati gehitzen diona, minifikatuta eta gzip bidez konprimatuta (min+gzip; zenbat eta gutxiago, orduan eta txikiagoa), esbuild bidez paketatuta, liburutegiaren beraren tamaina-egiaztapenak egiten duen bezala. Besteak baino askoz handiagoa den liburutegi baten barra osorik marrazten da, amaiera moztuta.
| Liburutegia | Edozein mota |
|---|---|
| @maistik/validate-nif 2.0.1 | |
| @kreyo/nif-validator 0.1.0 | |
| spain-id 1.1.14 | |
| dni-js 1.0.0 | |
| nif-dni-nie-cif-validation konpilazio hau | |
| better-dni 4.4.2 | |
| jsvat 2.5.4 | |
| nif-dni-nie-cif-validation 1.0.11 | |
| validator.js isIdentityCard(x, "ES") 13.15.35 | |
| validator.js isTaxID(x, "es-ES") 13.15.35 | |
| stdnum 1.12.6 |
Konpilazio hau baino txikiagoak edozein motatako egiaztatzaile baterako: @maistik/validate-nif 2.0.1 (456 B), @kreyo/nif-validator 0.1.0 (533 B), spain-id 1.1.14 (583 B) eta dni-js 1.0.0 (882 B). Hau ere neurtu da: stdnum 1.12.6, Espainiako IFZaren modulua zuzenean inportatuta (dokumentatu gabea), 2.468 B.
Liburutegi txikiago batzuek mota gutxiago egiaztatzen dituzte. Honek sarrera normalizatzeko, CIF-3 arauko kontrol motetarako eta K/L/M IFZetarako erabiltzen ditu byteak. CommonJS gisa bakarrik argitaratutako liburutegiek ez dute tree shaking onartzen; beraz, haien funtzio batek liburutegi osoa kostatzen du. Herrialde askotako edo helburu orokorreko liburutegiak, stdnum eta validator.js adibidez, handiagoak dira diseinuz.
| Liburutegia | NAN | AIZ | IFK | Edozein mota | Liburutegi osoa |
|---|---|---|---|---|---|
| @maistik/validate-nif 2.0.1 | 215 B | 243 B | 319 B | 456 B | 1.189 B |
| @kreyo/nif-validator 0.1.0 | 533 B | 533 B | 533 B | 533 B | 746 B |
| spain-id 1.1.14 | 165 B | 237 B | 363 B | 583 B | 704 B |
| dni-js 1.0.0 | 883 B | 882 B | ez da onartzen | 882 B | 880 B |
| nif-dni-nie-cif-validation konpilazio hau | 623 B | 586 B | 568 B | 929 B | 4.679 B |
| better-dni 4.4.2 | 1.135 B | 1.135 B | ez da onartzen | 1.134 B | 1.132 B |
| jsvat 2.5.4 | 1.186 B | 1.186 B | 1.186 B | 1.186 B | 5.266 B |
| nif-dni-nie-cif-validation 1.0.11 | 1.517 B | 1.517 B | 1.518 B | 1.517 B | 1.514 B |
| validator.js isIdentityCard(x, "ES") 13.15.35 | 2.539 B | 2.539 B | ez da onartzen | 2.539 B | 44.449 B |
| validator.js isTaxID(x, "es-ES") 13.15.35 | 6.537 B | 6.537 B | ez da onartzen | 6.537 B | 44.449 B |
| stdnum 1.12.6 | 51.063 B | 51.063 B | 51.063 B | 51.063 B | 51.054 B |
SPEC.md fitxategiarekiko adostasuna
«SPEC.md fitxategiarekiko adostasuna» atalaLiburutegiaren proba-kasuetatik (aukera lehenetsiak) liburutegi bakoitzak SPEC.md fitxategiak bezala epaitzen dituen kasuen ehunekoa: baliozkoak edo baliogabeak.
| Liburutegia | Kasu guztiak | Sarrera kanonikoa bakarrik |
|---|---|---|
| nif-dni-nie-cif-validation konpilazio hau | ||
| nif-dni-nie-cif-validation 1.0.11 | ||
| spain-id 1.1.14 | ||
| better-dni 4.4.2 | ||
| dni-js 1.0.0 | ||
| stdnum 1.12.6 | ||
| validator.js isIdentityCard(x, "ES") 13.15.35 | ||
| validator.js isTaxID(x, "es-ES") 13.15.35 | ||
| @maistik/validate-nif 2.0.1 | ||
| @kreyo/nif-validator 0.1.0 | ||
| jsvat 2.5.4 |
| Liburutegia | NAN | AIZ | IFK | K/L/M | Desadostasunak | Erabaki dokumentatu baten ondorioz |
|---|---|---|---|---|---|---|
| nif-dni-nie-cif-validation konpilazio hau | % 100,0 | % 100,0 | % 100,0 | % 100,0 | 0 | 0 |
| nif-dni-nie-cif-validation 1.0.11 | % 73,3 | % 88,9 | % 83,6 | % 100,0 | 20 | 13 |
| spain-id 1.1.14 | % 90,0 | % 77,8 | % 86,9 | % 36,4 | 22 | 13 |
| better-dni 4.4.2 | % 73,3 | % 77,8 | ez da onartzen | % 45,5 | 18 | 7 |
| dni-js 1.0.0 | % 76,7 | % 77,8 | ez da onartzen | % 45,5 | 17 | 7 |
| stdnum 1.12.6 | % 90,0 | % 83,3 | % 63,9 | % 100,0 | 29 | 29 |
| validator.js isIdentityCard(x, "ES") 13.15.35 | % 80,0 | % 77,8 | ez da onartzen | % 45,5 | 16 | 6 |
| validator.js isTaxID(x, "es-ES") 13.15.35 | % 80,0 | % 77,8 | ez da onartzen | % 100,0 | 10 | 5 |
| @maistik/validate-nif 2.0.1 | % 86,7 | % 77,8 | % 86,9 | % 45,5 | 22 | 14 |
| @kreyo/nif-validator 0.1.0 | % 86,7 | % 77,8 | % 86,9 | % 45,5 | 22 | 14 |
| jsvat 2.5.4 | % 90,0 | % 83,3 | % 82,0 | % 100,0 | 17 | 17 |
Liburutegi batek egiaztatzen ez duen mota bat haren zenbakietatik kanpo geratzen da; beraz, irismen desberdineko liburutegien artean, konparatu zutabeak, eta ez «Kasu guztiak». Liburutegi bakoitzaren desadostasunen zerrenda, bakoitzaren adibide batekin, latest.md fitxategian dago (ingelesez).
Metodoa
«Metodoa» atala- Sarrerak. Hazidun sorgailu sasi-ausazko batekin sortzen dira; beraz, exekuzio eta makina guztiek kate berberak neurtzen dituzte: dokumentu baliozkoak eta dokumentu berak kontrol-karaktere okerrarekin, mota bakoitzerako.
- Deiak. Liburutegi bakoitzari bere dokumentazioak dioen bezala deitzen zaio, bere aukera lehenetsiekin, prozesatu gabeko sarrera-katearen gainean. Salbuespen bakarra jsvat da, IFZ-BEZ egiaztatzaile bat: haren sarrerei
ESaurrizkia gehitzen zaie, neurtutako begiztatik kanpo. - Neurketa. tinybench tresnak zeregin bakoitza bere prozesuan exekutatzen du, berotze baten ondoren, V8k liburutegi batetik ikasten duenak hurrengoaren zenbakia alda ez dezan. Exekuzio osoa hainbat txandatan errepikatzen da, liburutegien ordena multzoen eta txanden artean aldatzen da, eta zenbaki bakoitza bere txanda medianarena da.
- Tamaina. Liburutegi bakoitzak dokumentatzen duen funtzio bakarreko inportazioa, esbuild bidez paketatua eta minifikatua eta gzip bidez 9. mailan konprimatua, inportazio huts baten kostua kenduta.
- Adostasuna. Liburutegi bakoitzaren «edozein mota» deia, aukera lehenetsiak probatzen dituzten kasuen gainean, kasu bakoitza baliozko edo baliogabe gisa epaituta.
Metodologia osoa, haren oharrak eta emaitzen eskema bench/README.md fitxategian daude (ingelesez).
Exekutatu zuk zeuk
«Exekutatu zuk zeuk» atalaLiburutegiak bertsio zehatzetan instalatzen dira; beraz, exekuzio batek latest.json fitxategiak jasotzen duena neurtzen du, hain zuzen. Itxi aurretik beste programak, eta konparatu proportzioak, ez zenbaki absolutuak:
git clone https://github.com/josegoval/nif-dni-nie-cif-validation.gitcd nif-dni-nie-cif-validationpnpm install --frozen-lockfilepnpm bench:competitors # 5 minutu inguru; bench/results/latest.json eta latest.md idazten ditupnpm bench komandoak, berriz, egiaztatzaile bakoitza 1. bertsioarekin konparatzen du. GitHub Actions lan-fluxu batek errendimendu-proba bera exekutatzen du eskatuta, runner partekatu batean, eta emaitzak igotzen ditu.