From 74b19f3fe631e892e79cb807aa9628bb1210128f Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Fri, 10 Nov 2023 02:41:45 +0700 Subject: [PATCH] Improve performance Fixes #10 --- benchmark/fixture.txt | 404 ++++++++++++++++++++++++++++++++++++++++++ benchmark/index.js | 59 ++++++ index.js | 7 +- package.json | 3 +- 4 files changed, 470 insertions(+), 3 deletions(-) create mode 100644 benchmark/fixture.txt create mode 100644 benchmark/index.js diff --git a/benchmark/fixture.txt b/benchmark/fixture.txt new file mode 100644 index 0000000..88c0d88 --- /dev/null +++ b/benchmark/fixture.txt @@ -0,0 +1,404 @@ +3.881 +C.c.1) Provinsi ACEH +C.c. Rincian kode dan data pulau per kabupaten/kota per provinsi seluruh Indonesia +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +KAB. ACEH SELATAN 611.01 +11.01.40001 Pulau Batukapal 03°19'03.44" U 097°07'41.73" T TBP +11.01.40002 Pulau Batutunggal 03°24'55.00" U 097°04'21.00" T TBP +11.01.40003 Pulau Kayee 02°52'54.99" U 097°31'07.00" T TBP +11.01.40004 Pulau Mangki 02°54'25.11" U 097°26'18.51" T TBP +11.01.40005 Pulau Tengku 02°53'16.00" U 097°30'54.00" T TBP +11.01.40006 Pulau Trumon 02°48'34.67" U 097°35'36.51" T TBP +KAB. ACEH TIMUR 811.03 +11.03.40001 Pulau Bangka Matee 04°36'48.74" U 098°00'31.21" T TBP +11.03.40002 Pulau Gosongsungaibelah 05°09'12.80" U 097°34'56.08" T TBP +11.03.40003 Pulau Krueng Beukah 04°36'19.18" U 098°01'02.04" T +11.03.40004 Pulau Kuala Parek 04°41'35.16" U 097°57'59.15" T +11.03.40005 Pulau Nebukserdang 05°06'37.00" U 097°37'35.00" T BP +11.03.40006 Pulau Pusong Broh 04°38'21.32" U 097°59'38.64" T +11.03.40007 Pulau Pusong Brooh 04°35'50.74" U 097°57'59.07" T TBP +11.03.40008 Pulau Ujongperleng 04°35'38.25" U 098°01'09.57" T TBP +KAB. ACEH BESAR 4211.06 +11.06.40001 Pulau Amad Rangmanyang 05°37'02.48" U 095°31'56.11" T TBP +11.06.40002 Pulau Baeet 05°39'49.90" U 095°06'32.62" T TBP +11.06.40003 Pulau Bateebeukah 05°45'14.15" U 095°03'23.05" T TBP +11.06.40004 Pulau Bateecut 05°34'41.99" U 095°13'09.99" T TBP +11.06.40005 Pulau Bateedua Selatan 05°21'03.38" U 095°13'06.63" T TBP +11.06.40006 Pulau Bateedua Utara 05°21'27.35" U 095°13'49.55" T TBP +11.06.40007 Pulau Bateeleblah 05°47'34.72" U 094°58'26.09" T TBP (PPKT) +11.06.40008 Pulau Bateelumpat 05°34'44.80" U 095°12'55.02" T TBP +11.06.40009 Pulau Bateepantee Lhok Nga 05°26'03.54" U 095°13'52.10" T TBP +11.06.40010 Pulau Bateerayeuk 05°34'45.99" U 095°12'00.00" T TBP +11.06.40011 Pulau Bateetamon Rayeuk 05°18'30.91" U 095°12'23.65" T TBP +11.06.40012 Pulau Bateetamon Selatan 05°18'15.13" U 095°12'32.06" T TBP +11.06.40013 Pulau Bateetamon Tengoh 05°18'20.39" U 095°12'26.14" T TBP +11.06.40014 Pulau Bateetamon Utara 05°18'23.17" U 095°12'26.59" T TBP +11.06.40015 Pulau Bateeujong Lhok Paro 05°18'46.10" U 095°12'12.46" T TBP +11.06.40016 Pulau Bateeujong Lhok Tuleot 05°18'43.47" U 095°13'11.78" T TBP +11.06.40017 Pulau Breueh 05°37'28.89" U 095°09'18.31" T BP +11.06.40018 Pulau Bukulah Utara 05°37'29.97" U 095°03'04.38" T +11.06.40019 Pulau Bunta 05°33'20.00" U 095°10'05.00" T TBP +11.06.40020 Pulau Burok 05°41'11.33" U 095°23'15.15" T TBP +3.882 +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +11.06.40021 Pulau Cut 05°33'47.14" U 095°10'03.15" T TBP +11.06.40022 Pulau Gepon Cut 05°36'49.82" U 095°03'42.26" T TBP +11.06.40023 Pulau Gepon Selatan 05°36'34.99" U 095°03'34.43" T TBP +11.06.40024 Pulau Gepon Tengoh 05°36'40.00" U 095°03'45.00" T TBP +11.06.40025 Pulau Geupon Batee 05°36'28.95" U 095°03'29.41" T +11.06.40026 Pulau Iku Maneek 05°33'07.31" U 095°09'01.87" T +11.06.40027 Pulau Ikumanek 05°34'26.00" U 095°10'52.00" T TBP +11.06.40028 Pulau Jeuroh 05°38'32.21" U 095°10'08.05" T TBP +11.06.40029 Pulau Kerisek 05°38'02.37" U 095°04'08.33" T BP +11.06.40030 Pulau Looh 05°45'51.28" U 095°02'08.22" T TBP +11.06.40031 Pulau Lumpat 05°34'48.92" U 095°12'57.13" T +11.06.40032 Pulau Lungkap Cut 05°47'31.78" U 094°58'20.09" T TBP +11.06.40033 Pulau Nasi 05°41'57.99" U 095°04'54.99" T BP +11.06.40034 Pulau Rusa 05°16'39.00" U 095°12'20.00" T TBP (PPKT) +11.06.40035 Pulau Sidom Besar 05°42'57.13" U 095°01'01.53" T TBP +11.06.40036 Pulau Sidom Kecil 05°42'50.13" U 095°00'53.04" T TBP +11.06.40037 Pulau Tengkorak 05°39'28.73" U 095°09'30.26" T TBP +11.06.40038 Pulau Tuan 05°33'52.10" U 095°14'58.64" T TBP +11.06.40039 Pulau Ujong Apui 05°40'18.81" U 095°02'20.16" T +11.06.40040 Pulau Ujongriting 05°13'23.91" U 095°14'28.35" T TBP +11.06.40041 Pulau Uu 05°40'16.06" U 095°02'16.81" T TBP +11.06.40042 Pulau Uuh 05°45'18.48" U 095°00'42.64" T TBP +KAB. PIDIE 111.07 +11.07.40001 Pulau Busung 05°17'14.56" U 096°05'43.63" T BP +KAB. SIMEULUE 14411.09 +11.09.40001 Pulau Aie Luan 02°38'30.24" U 096°07'00.87" T +11.09.40002 Pulau Aieluan 02°43'27.36" U 096°06'59.76" T +11.09.40003 Pulau Alaala 02°40'25.21" U 096°06'28.34" T TBP +11.09.40004 Pulau Ama Adu 02°22'14.94" U 096°19'44.31" T +11.09.40005 Pulau Ama Balok 02°33'49.35" U 096°18'40.99" T +11.09.40006 Pulau Ama Galok 02°32'00.85" U 096°23'12.73" T +11.09.40007 Pulau Ama Perak 02°50'13.92" U 095°54'37.14" T +11.09.40008 Pulau Amasianggao 02°44'51.35" U 096°06'42.26" T +11.09.40009 Pulau Amasianggao Ketek 02°44'51.54" U 096°06'13.38" T +11.09.40010 Pulau Arafulu 02°54'11.00" U 095°45'25.99" T TBP +11.09.40011 Pulau Aramaram 02°38'56.18" U 096°09'10.39" T TBP +11.09.40012 Pulau Aru 02°29'57.31" U 096°22'26.38" T +11.09.40013 Pulau Asu 02°46'55.99" U 096°00'43.99" T TBP +11.09.40014 Pulau Awah 02°29'57.38" U 096°22'39.25" T +11.09.40015 Pulau Baba 02°40'30.00" U 096°08'44.00" T TBP +3.883 +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +11.09.40016 Pulau Babi 02°30'23.20" U 096°23'44.85" T TBP +11.09.40017 Pulau Babi 02°10'08.00" U 096°38'10.00" T TBP +11.09.40018 Pulau Balok 02°28'58.49" U 096°23'11.95" T TBP +11.09.40019 Pulau Balubuk 02°53'52.51" U 095°50'14.15" T +11.09.40020 Pulau Balung 02°40'13.00" U 096°07'58.00" T TBP +11.09.40021 Pulau Balung Silare 02°38'47.00" U 096°06'59.00" T TBP +11.09.40022 Pulau Batuberlayar 02°25'36.34" U 096°31'28.45" T TBP +11.09.40023 Pulau Batuberlayar Kecil 02°25'29.46" U 096°31'18.48" T TBP +11.09.40024 Pulau Batuhek 02°21'37.72" U 096°12'13.66" T +11.09.40025 Pulau Benar 02°32'17.33" U 096°21'27.12" T TBP +11.09.40026 Pulau Bilalang 02°32'11.04" U 096°23'07.72" T +11.09.40027 Pulau Binaksi 02°26'23.48" U 096°29'32.78" T +11.09.40028 Pulau Cemara 02°33'14.27" U 096°20'37.87" T +11.09.40029 Pulau Deli 02°32'57.35" U 096°03'57.38" T TBP +11.09.40030 Pulau Dua Gadang 02°29'24.05" U 096°22'39.94" T TBP +11.09.40031 Pulau Dua Ketek 02°29'27.85" U 096°22'39.01" T TBP +11.09.40032 Pulau Dua Lugu 02°30'00.02" U 096°22'36.14" T +11.09.40033 Pulau Duo 02°30'05.84" U 096°22'17.01" T +11.09.40034 Pulau Falu 02°43'23.12" U 096°08'11.84" T TBP +11.09.40035 Pulau Fatu 02°39'50.54" U 096°10'12.80" T +11.09.40036 Pulau Gabui 02°33'49.00" U 096°19'42.32" T +11.09.40037 Pulau Gabuisitok 02°33'57.21" U 096°19'35.99" T +11.09.40038 Pulau Gae Gae Sambae Heba 02°53'52.96" U 095°50'07.95" T +11.09.40039 Pulau Gae Gae Sambae Onok Onok 02°53'49.67" U 095°50'08.83" T +11.09.40040 Pulau Gailaulo 02°50'52.00" U 095°53'15.00" T TBP +11.09.40041 Pulau Gaimiteum 02°49'55.54" U 095°53'46.15" T TBP +11.09.40042 Pulau Grik 02°51'47.98" U 095°55'48.54" T TBP +11.09.40043 Pulau Gumentoh 02°32'50.66" U 096°23'19.83" T +11.09.40044 Pulau Gumentoh 02°34'04.42" U 096°18'36.88" T +11.09.40045 Pulau Ihoung Keubau 02°40'06.71" U 096°10'49.32" T +11.09.40046 Pulau Ina 02°55'36.00" U 095°45'37.00" T TBP +11.09.40047 Pulau Jambu 02°32'32.01" U 096°20'56.58" T +11.09.40048 Pulau Jawijawi 02°34'12.51" U 096°21'52.66" T TBP +11.09.40049 Pulau Jawi-Jawi 02°42'27.04" U 096°08'14.57" T +11.09.40050 Pulau Jirun 02°32'23.80" U 096°20'45.60" T +11.09.40051 Pulau Kala 02°38'29.14" U 096°07'12.83" T +11.09.40052 Pulau Kapur 02°44'48.40" U 096°05'17.62" T +11.09.40053 Pulau Karang Polisi 02°30'07.75" U 096°23'18.36" T +11.09.40054 Pulau Kasik 02°31'56.23" U 096°20'46.11" T +11.09.40055 Pulau Khalakhala 02°49'34.00" U 095°57'51.99" T TBP +3.884 +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +11.09.40056 Pulau Kuala Ketek 02°28'15.90" U 096°23'31.95" T TBP +11.09.40057 Pulau Kuala Ketek Utara 02°28'18.75" U 096°23'30.69" T TBP +11.09.40058 Pulau Kungkung Betut 02°44'49.29" U 096°05'03.77" T +11.09.40059 Pulau Labuan Cina 02°25'33.60" U 096°30'14.18" T +11.09.40060 Pulau Lampaseh 02°32'11.23" U 096°22'04.41" T +11.09.40061 Pulau Langeni 02°39'56.97" U 096°09'28.97" T TBP +11.09.40062 Pulau Lapan 02°29'58.07" U 096°22'29.32" T +11.09.40063 Pulau Lapan Gadang 02°30'11.99" U 096°23'38.00" T TBP +11.09.40064 Pulau Lasia 02°05'26.99" U 096°39'00.00" T TBP +11.09.40065 Pulau Leukon 02°42'24.99" U 095°43'54.00" T TBP +11.09.40066 Pulau Lhok Anifung 02°32'21.72" U 096°21'04.73" T +11.09.40067 Pulau Lhok Ketek 02°42'48.89" U 096°08'35.51" T +11.09.40068 Pulau Limau 02°38'17.00" U 096°19'35.00" T TBP +11.09.40069 Pulau Linggam 02°36'31.84" U 095°52'03.82" T TBP +11.09.40070 Pulau Lugum Boya 02°50'07.24" U 095°53'13.62" T +11.09.40071 Pulau Marang 02°26'19.10" U 096°29'20.90" T +11.09.40072 Pulau Matahari 02°30'24.90" U 096°22'15.80" T +11.09.40073 Pulau Matahari 02°31'37.88" U 096°20'49.13" T +11.09.40074 Pulau Matamalingkar 02°43'42.10" U 096°07'47.50" T +11.09.40075 Pulau Mincau 02°21'15.99" U 096°11'53.99" T TBP +11.09.40076 Pulau Pamong 02°25'07.40" U 096°29'27.38" T +11.09.40077 Pulau Pandan 02°29'57.12" U 096°22'25.34" T +11.09.40078 Pulau Pandan Sitok 02°32'05.77" U 096°20'41.83" T +11.09.40079 Pulau Panglima Gajah 02°25'32.27" U 096°28'56.28" T +11.09.40080 Pulau Panjang 02°51'00.97" U 095°52'30.24" T TBP +11.09.40081 Pulau Panjang 02°50'06.73" U 095°47'16.99" T TBP +11.09.40082 Pulau Panjang 02°39'06.30" U 096°07'14.90" T TBP +11.09.40083 Pulau Panjang 02°30'51.66" U 096°23'19.50" T TBP +11.09.40084 Pulau Panjang Kecil 02°30'48.97" U 096°22'54.79" T TBP +11.09.40085 Pulau Penyu 02°51'11.00" U 095°56'35.00" T TBP +11.09.40086 Pulau Pinang 02°39'06.00" U 096°12'54.00" T TBP +11.09.40087 Pulau Rajo 02°30'00.60" U 096°22'09.61" T +11.09.40088 Pulau Rajo 02°52'09.68" U 095°52'43.16" T +11.09.40089 Pulau Salaut Besar 02°58'23.99" U 095°23'39.00" T TBP (PPKT) +11.09.40090 Pulau Salaut Kecil 03°00'47.99" U 095°24'16.99" T TBP +11.09.40091 Pulau Saridin 02°26'15.70" U 096°29'04.72" T +11.09.40092 Pulau Sarok 02°29'07.22" U 096°22'55.07" T TBP +11.09.40093 Pulau Sarok 02°29'59.58" U 096°22'20.53" T +11.09.40094 Pulau Sarok Linggi 02°30'04.97" U 096°22'46.57" T +11.09.40095 Pulau Sarok Luar 02°30'06.70" U 096°22'50.90" T +3.885 +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +11.09.40096 Pulau Sayur 02°31'07.48" U 096°22'13.98" T TBP +11.09.40097 Pulau Seberang 02°29'02.75" U 096°25'23.04" T +11.09.40098 Pulau Seberuak 02°32'42.13" U 096°22'35.19" T +11.09.40099 Pulau Sefelak 02°24'51.00" U 096°13'50.00" T TBP +11.09.40100 Pulau Sektare Sigenu 02°26'16.16" U 096°29'12.55" T +11.09.40101 Pulau Sialik 02°24'56.74" U 096°30'02.95" T TBP +11.09.40102 Pulau Siambongambong 02°49'50.47" U 095°46'03.14" T TBP +11.09.40103 Pulau Sifolorfulfor 02°52'01.51" U 095°53'00.55" T +11.09.40104 Pulau Sigenu 02°26'16.39" U 096°30'23.56" T +11.09.40105 Pulau Sigenu Sitok 02°26'25.97" U 096°29'27.20" T +11.09.40106 Pulau Sihalik 02°24'04.20" U 096°29'02.19" T +11.09.40107 Pulau Simanahah 02°31'11.86" U 096°26'40.01" T TBP +11.09.40108 Pulau Simandah 02°29'50.23" U 096°24'06.97" T +11.09.40109 Pulau Simeulue 02°36'42.00" U 096°05'44.99" T BP +11.09.40110 Pulau Simeulue Cut 02°32'03.00" U 095°56'26.00" T TBP (PPKT) +11.09.40111 Pulau Sipedak 02°26'12.73" U 096°28'46.03" T +11.09.40112 Pulau Sipipit 02°24'02.09" U 096°29'15.90" T +11.09.40113 Pulau Sirafafe 02°50'15.49" U 095°47'09.17" T +11.09.40114 Pulau Siumat 02°39'02.00" U 096°22'30.00" T BP +11.09.40115 Pulau Subangsubang Lataling 02°26'27.74" U 096°29'24.03" T +11.09.40116 Pulau Sulang 02°29'48.74" U 096°04'41.25" T TBP +11.09.40117 Pulau Talago 02°42'48.03" U 096°08'08.07" T +11.09.40118 Pulau Talam 02°37'46.70" U 096°18'18.38" T TBP +11.09.40119 Pulau Talam 02°32'09.35" U 096°24'17.66" T +11.09.40120 Pulau Tangkahan 02°44'59.43" U 096°06'01.22" T +11.09.40121 Pulau Tangkahan Selatan 02°44'57.42" U 096°06'05.51" T +11.09.40122 Pulau Tangkahan Utaro 02°45'04.05" U 096°06'01.60" T +11.09.40123 Pulau Tenggel 02°26'03.53" U 096°29'15.98" T +11.09.40124 Pulau Tepi 02°53'30.99" U 095°45'45.00" T TBP +11.09.40125 Pulau Teupah 02°21'07.99" U 096°14'22.99" T BP +11.09.40126 Pulau Tiga Barat 02°39'18.28" U 096°07'21.81" T TBP +11.09.40127 Pulau Tiga Selatan 02°39'12.01" U 096°07'31.53" T TBP +11.09.40128 Pulau Tiga Utara 02°39'30.00" U 096°07'27.79" T TBP +11.09.40129 Pulau Tinggi 02°50'39.00" U 095°57'51.00" T TBP +11.09.40130 Pulau Toko 02°39'05.00" U 096°07'04.00" T TBP +11.09.40131 Pulau Toko 02°39'16.14" U 096°07'23.69" T +11.09.40132 Pulau Tufabete 02°33'05.83" U 096°21'36.46" T TBP +11.09.40133 Pulau Tufakei 02°34'07.33" U 096°21'36.91" T TBP +11.09.40134 Pulau Tupa Besar 02°31'21.11" U 096°21'26.27" T +11.09.40135 Pulau Tupa Kecil 02°31'32.18" U 096°21'21.01" T +3.886 +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +11.09.40136 Pulau Tupai 02°39'11.99" U 096°07'50.99" T TBP +11.09.40137 Pulau Tupai 02°50'31.81" U 095°47'14.41" T +11.09.40138 Pulau Tupai Selatan 02°39'02.80" U 096°07'48.94" T +11.09.40139 Pulau Ujung Klerek Sebeul 02°29'35.16" U 096°23'46.12" T +11.09.40140 Pulau Ujung Klerek Sitok 02°29'25.18" U 096°23'49.17" T +11.09.40141 Pulau Ujung Linggi 02°30'17.03" U 096°23'03.59" T +11.09.40142 Pulau Ujung Suak 02°39'10.99" U 096°08'40.20" T +11.09.40143 Pulau Ujung Tupai 02°38'54.29" U 096°07'44.27" T +11.09.40144 Pulau Ulau Fatuhek 02°23'03.03" U 096°19'57.26" T TBP +KAB. ACEH SINGKIL 8011.10 +11.10.40001 Pulau Asok 02°15'43.99" U 097°19'45.00" T TBP +11.10.40002 Pulau Baguk 02°17'33.00" U 097°24'10.00" T BP +11.10.40003 Pulau Balai 02°18'13.00" U 097°24'27.00" T BP +11.10.40004 Pulau Balong 02°18'07.99" U 097°14'42.00" T TBP +11.10.40005 Pulau Bangkaru 02°04'10.99" U 097°06'56.99" T TBP +11.10.40006 Pulau Baronik 02°06'23.71" U 097°21'07.53" T TBP +11.10.40007 Pulau Batubangkaru 02°06'22.71" U 097°05'15.73" T TBP +11.10.40008 Pulau Batulanting 02°14'10.82" U 097°10'07.79" T TBP +11.10.40009 Pulau Bekhu 02°03'29.00" U 097°21'10.00" T TBP +11.10.40010 Pulau Biawak 02°16'49.00" U 097°20'26.00" T TBP +11.10.40011 Pulau Birahan 02°11'20.00" U 098°02'16.00" T TBP +11.10.40012 Pulau Buaya 02°06'46.18" U 097°21'02.23" T TBP +11.10.40013 Pulau Busung Besar 02°12'49.00" U 097°12'33.99" T TBP +11.10.40014 Pulau Busung Kecil 02°12'51.84" U 097°12'29.74" T TBP +11.10.40015 Pulau Cemara 02°15'54.46" U 097°47'50.04" T TBP +11.10.40016 Pulau Dua 02°11'12.99" U 097°19'36.99" T TBP +11.10.40017 Pulau Gosongtelaga 02°16'31.00" U 097°56'13.99" T BP +11.10.40018 Pulau Inakuri 02°12'58.69" U 097°18'11.04" T TBP +11.10.40019 Pulau Jawijawi 02°22'58.84" U 097°33'41.99" T TBP +11.10.40020 Pulau Keder 02°22'50.59" U 097°51'12.99" T TBP +11.10.40021 Pulau Kilangan 02°17'34.00" U 097°46'01.02" T BP +11.10.40022 Pulau Ladangbisik 02°29'22.48" U 097°51'15.12" T TBP +11.10.40023 Pulau Lambudung 02°14'52.00" U 097°20'34.00" T TBP +11.10.40024 Pulau Lamun 02°15'27.00" U 097°12'29.00" T TBP +11.10.40025 Pulau Lasawun 02°13'58.07" U 097°14'34.53" T TBP +11.10.40026 Pulau Laurek 02°15'19.00" U 097°17'57.00" T TBP +11.10.40027 Pulau Linau 02°14'34.62" U 097°12'35.76" T TBP +11.10.40028 Pulau Madang 02°18'09.00" U 097°13'54.99" T TBP +11.10.40029 Pulau Madangkati 02°15'19.00" U 097°11'08.99" T TBP +11.10.40030 Pulau Malelo 02°15'19.07" U 097°25'19.51" T TBP +3.887 +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +11.10.40031 Pulau Matahari 02°17'07.00" U 097°15'11.99" T TBP +11.10.40032 Pulau Mbelen 02°24'55.00" U 097°51'04.00" T TBP +11.10.40033 Pulau Melila 02°15'36.79" U 097°17'12.31" T TBP +11.10.40034 Pulau Muarapea 02°28'47.36" U 097°50'04.49" T TBP +11.10.40035 Pulau Nago 02°16'00.23" U 097°14'39.45" T TBP +11.10.40036 Pulau Nibung 02°04'36.99" U 097°20'44.99" T TBP +11.10.40037 Pulau Orongan 02°16'45.99" U 097°16'16.00" T TBP +11.10.40038 Pulau Pabandah 02°11'47.00" U 097°19'37.99" T TBP +11.10.40039 Pulau Pabisi 02°14'28.00" U 097°18'40.00" T TBP +11.10.40040 Pulau Pandan 02°14'13.27" U 097°16'21.69" T TBP +11.10.40041 Pulau Panjang 02°16'21.00" U 097°24'42.00" T TBP +11.10.40042 Pulau Pasitangah 02°15'53.79" U 097°46'46.66" T TBP +11.10.40043 Pulau Pelambak Besar 02°10'28.99" U 097°26'08.00" T TBP +11.10.40044 Pulau Pelambak Kecil 02°10'44.00" U 097°27'49.00" T TBP +11.10.40045 Pulau Pemuka 02°20'51.97" U 097°51'25.18" T BP +11.10.40046 Pulau Penerusan Selatan 02°04'13.00" U 097°20'57.00" T TBP +11.10.40047 Pulau Penerusan Utara 02°04'23.00" U 097°20'53.99" T TBP +11.10.40048 Pulau Pinang 02°02'22.99" U 097°23'21.99" T TBP +11.10.40049 Pulau Pisang 02°14'57.62" U 097°47'32.40" T TBP +11.10.40050 Pulau Ragorago 02°15'23.00" U 097°14'51.00" T TBP +11.10.40051 Pulau Rangit Besar 02°14'30.00" U 097°25'32.00" T TBP +11.10.40052 Pulau Rangit Kecil 02°14'35.00" U 097°26'06.00" T TBP +11.10.40053 Pulau Rubi 02°12'21.44" U 097°19'02.62" T TBP +11.10.40054 Pulau Rungpao 02°12'34.99" U 097°12'42.99" T TBP +11.10.40055 Pulau Sagusagu 02°15'02.17" U 097°15'28.04" T TBP +11.10.40056 Pulau Samardua 02°29'18.66" U 097°51'05.72" T TBP +11.10.40057 Pulau Samut 02°07'50.99" U 097°21'04.00" T TBP +11.10.40058 Pulau Sanglat 02°10'05.99" U 097°19'53.00" T TBP +11.10.40059 Pulau Sarangalu 01°58'53.00" U 097°23'04.99" T TBP +11.10.40060 Pulau Saranggantong 02°04'09.99" U 097°21'18.00" T BP +11.10.40061 Pulau Sarok 02°15'59.89" U 097°47'58.96" T TBP +11.10.40062 Pulau Sarombang 02°10'55.74" U 097°19'22.76" T TBP +11.10.40063 Pulau Sianjai 02°06'56.00" U 097°20'39.00" T TBP +11.10.40064 Pulau Sikandang 02°18'02.99" U 097°18'38.99" T TBP +11.10.40065 Pulau Simok 02°13'57.00" U 097°13'14.00" T TBP +11.10.40066 Pulau Sinanda 02°14'35.34" U 097°12'37.35" T TBP +11.10.40067 Pulau Sipakek 02°15'59.76" U 097°47'18.23" T TBP +11.10.40068 Pulau Solokaceh 02°19'41.95" U 097°49'47.53" T TBP +11.10.40069 Pulau Subang 02°14'28.06" U 097°16'02.41" T TBP +11.10.40070 Pulau Tabalah 02°14'35.99" U 097°16'32.99" T TBP +3.888 +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +11.10.40071 Pulau Tabalau 02°16'05.99" U 097°16'59.99" T TBP +11.10.40072 Pulau Tabalo 02°13'27.99" U 097°13'34.00" T TBP +11.10.40073 Pulau Tailana 02°16'40.00" U 097°13'52.00" T TBP +11.10.40074 Pulau Tambarat 02°19'14.99" U 097°13'28.99" T TBP +11.10.40075 Pulau Tapuitapui 02°17'48.00" U 097°25'23.00" T TBP +11.10.40076 Pulau Telukrumbia 02°20'00.60" U 097°47'22.38" T TBP +11.10.40077 Pulau Tuangku 02°10'50.00" U 097°16'16.00" T BP +11.10.40078 Pulau Tugu 02°15'41.00" U 097°17'31.99" T TBP +11.10.40079 Pulau Ujungbatu 02°20'33.00" U 097°23'57.99" T BP +11.10.40080 Pulau Ujunglolok 02°02'33.00" U 097°20'17.99" T TBP +KAB. ACEH JAYA 4311.14 +11.14.40001 Pulau Baaloen 04°36'40.95" U 095°35'06.60" T TBP +11.14.40002 Pulau Batee 04°36'55.00" U 095°34'27.00" T TBP +11.14.40003 Pulau Batee Pageu 04°48'27.67" U 095°26'15.13" T +11.14.40004 Pulau Bateeburouk 04°41'09.84" U 095°31'12.19" T TBP +11.14.40005 Pulau Bateepenjaba 04°43'14.91" U 095°28'52.98" T TBP +11.14.40006 Pulau Bateeperling 04°41'12.87" U 095°30'32.21" T TBP +11.14.40007 Pulau Bateerigah 04°38'06.83" U 095°31'17.41" T TBP +11.14.40008 Pulau Bateetutong 04°38'49.09" U 095°34'57.25" T TBP +11.14.40009 Pulau Bateeuleegajah 04°38'09.13" U 095°31'14.28" T TBP +11.14.40010 Pulau Blekoh 04°36'45.00" U 095°34'57.00" T TBP +11.14.40011 Pulau Cut 04°43'17.36" U 095°30'13.85" T +11.14.40012 Pulau Cut Barat 04°43'15.01" U 095°30'07.79" T +11.14.40013 Pulau Enggang 04°38'33.00" U 095°33'52.99" T TBP +11.14.40014 Pulau Keluang 05°07'39.00" U 095°17'26.99" T TBP +11.14.40015 Pulau Khek 04°48'32.00" U 095°25'38.78" T TBP +11.14.40016 Pulau Kreueh 04°46'22.00" U 095°26'55.00" T TBP +11.14.40017 Pulau Krumo 04°44'14.33" U 095°29'45.42" T +11.14.40018 Pulau Lhok Geupaleeh 04°53'53.81" U 095°23'49.92" T +11.14.40019 Pulau Lipan 05°00'50.21" U 095°21'00.46" T TBP +11.14.40020 Pulau Mane 04°52'34.11" U 095°21'51.00" T BP +11.14.40021 Pulau Paling 04°43'22.00" U 095°30'13.00" T TBP +11.14.40022 Pulau Pasi 04°36'38.99" U 095°34'56.69" T TBP +11.14.40023 Pulau Pegasih 04°39'09.45" U 095°33'42.03" T TBP +11.14.40024 Pulau Penjaba Besar 04°43'22.00" U 095°29'17.99" T TBP +11.14.40025 Pulau Penjaba Kecil 04°43'22.99" U 095°29'05.82" T TBP +11.14.40026 Pulau Perling Cut 04°42'18.68" U 095°30'27.52" T +11.14.40027 Pulau Perling Cut Barat 04°41'16.58" U 095°30'23.27" T TBP +11.14.40028 Pulau Perling Cut Timur 04°41'12.94" U 095°30'23.86" T TBP +11.14.40029 Pulau Perling Rayeuk 04°41'15.06" U 095°30'36.83" T TBP +3.889 +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +11.14.40030 Pulau Pingi 04°47'15.68" U 095°26'52.49" T TBP +11.14.40031 Pulau Punyi 04°37'03.23" U 095°34'24.97" T +11.14.40032 Pulau Raya 04°52'12.00" U 095°22'44.00" T BP (PPKT) +11.14.40033 Pulau Renggah 04°36'38.64" U 095°34'05.35" T +11.14.40034 Pulau Reusam 04°38'39.09" U 095°33'26.19" T TBP +11.14.40035 Pulau Rigah 04°38'16.00" U 095°31'13.00" T TBP +11.14.40036 Pulau Sidom 04°39'04.00" U 095°34'21.00" T TBP +11.14.40037 Pulau Tengkumeusa 04°40'12.96" U 095°31'56.21" T TBP +11.14.40038 Pulau Tengkuusman 04°37'06.13" U 095°34'21.33" T TBP +11.14.40039 Pulau Tuloo 04°37'01.48" U 095°34'32.61" T TBP +11.14.40040 Pulau Tumae 04°41'07.55" U 095°30'36.57" T TBP +11.14.40041 Pulau Ujoeng Geunteeng 05°04'53.54" U 095°18'23.02" T +11.14.40042 Pulau Ujongbaroh 04°39'14.00" U 095°32'24.00" T TBP +11.14.40043 Pulau Ujongsudhen 05°06'54.00" U 095°17'26.00" T TBP +KAB. NAGAN RAYA 411.15 +11.15.40001 Pulau Dama 03°51'38.21" U 096°22'56.44" T +11.15.40002 Pulau Rusa 03°51'36.45" U 096°22'53.78" T +11.15.40003 Pulau Singgah Mata 03°51'34.10" U 096°22'56.48" T +11.15.40004 Pulau Uleegunong 03°58'34.00" U 096°28'39.99" T TBP +KAB. ACEH TAMIANG 911.16 +11.16.40001 Pulau Aluenireh Barat 04°25'41.33" U 098°13'44.38" T BP +11.16.40002 Pulau Aluenireh Timur 04°25'31.04" U 098°14'52.60" T TBP +11.16.40003 Pulau Besingtinggi 04°19'33.90" U 098°17'09.82" T TBP +11.16.40004 Pulau Kualagenting 04°26'28.62" U 098°13'38.75" T TBP +11.16.40005 Pulau Kualapenaga 04°25'47.06" U 098°15'40.59" T BP +11.16.40006 Pulau Pulausekai 04°24'28.65" U 098°17'00.46" T TBP +11.16.40007 Pulau Pusongcium 04°23'45.95" U 098°17'06.99" T TBP +11.16.40008 Pulau Pusongketapang 04°26'04.94" U 098°15'09.45" T TBP +11.16.40009 Pulau Rukui 04°30'35.28" U 098°08'50.46" T TBP +KOTA BANDA ACEH 111.71 +11.71.40001 Pulau Biawak 05°34'04.71" U 095°18'07.56" T +KOTA SABANG 1311.72 +11.72.40001 Pulau Batu Kembar 06°03'45.02" U 095°06'50.10" T +11.72.40002 Pulau Batu Runcing 06°03'46.37" U 095°06'49.59" T +11.72.40003 Pulau Batu Tengah 06°03'33.89" U 095°06'54.72" T +11.72.40004 Pulau Batulah Selatan 06°03'35.77" U 095°06'52.16" T TBP +11.72.40005 Pulau Batulah Tengah 06°03'42.28" U 095°06'51.94" T TBP +11.72.40006 Pulau Batulah Utara 06°03'45.55" U 095°06'51.26" T TBP +11.72.40007 Pulau Klah 05°52'34.00" U 095°18'41.00" T TBP +11.72.40008 Pulau Rondo 06°04'27.00" U 095°07'03.00" T TBP (PPKT) +3.890 +KordinatJumlahNama Provinsi, Kabupaten/Kota, PulauKode Pulau Keterangan +11.72.40009 Pulau Rondo Selatan 06°03'30.15" U 095°06'43.71" T TBP +11.72.40010 Pulau Rubiah 05°52'59.00" U 095°15'28.00" T TBP +11.72.40011 Pulau Seulako 05°53'41.84" U 095°15'14.06" T TBP +11.72.40012 Pulau Ujung Ba'U 06°03'20.51" U 095°07'00.80" T +11.72.40013 Pulau Weh 05°50'05.47" U 095°18'47.76" T BP (PPKT) +KOTA LANGSA 511.74 +11.74.40001 Pulau Pusoeng 04°33'06.99" U 098°03'56.00" T BP +11.74.40002 Pulau Pusong Salam 04°31'54.17" U 098°05'03.95" T +11.74.40003 Pulau Rawa Cut 04°32'11.00" U 098°02'19.00" T TBP +11.74.40004 Pulau Rawa Rayeuk 04°32'30.00" U 098°02'43.00" T TBP +11.74.40005 Pulau Telagatujoeh 04°33'31.86" U 098°03'34.64" T TBP +KOTA SUBULUSSALAM 711.75 +11.75.40001 Pulau Buluhcarak 02°47'14.32" U 097°50'55.31" T TBP +11.75.40002 Pulau Geruguh 02°44'04.99" U 097°48'06.99" T TBP +11.75.40003 Pulau Jabijabi 02°48'25.99" U 097°52'39.00" T TBP +11.75.40004 Pulau Kualakepeng Kedep 02°44'43.19" U 097°48'09.33" T TBP +11.75.40005 Pulau Kualakepeng Mbelen 02°44'25.00" U 097°47'35.99" T TBP +11.75.40006 Pulau Tualang Kedep 02°46'09.92" U 097°49'28.39" T TBP +11.75.40007 Pulau Tualang Mbelen 02°46'14.71" U 097°50'14.63" T TBP +363Jumlah Pulau Provinsi ACEH +*) BP : Berpenduduk +TBP : Tidak Berpenduduk +PPKT : Pulau-Pulau Kecil Terluar +Sumber data pulau : Gazeter Nasional Tahun 2021 +KETERANGAN: diff --git a/benchmark/index.js b/benchmark/index.js new file mode 100644 index 0000000..ee0e0e9 --- /dev/null +++ b/benchmark/index.js @@ -0,0 +1,59 @@ +import fs from 'node:fs'; +import {firstMatch, matches} from '../index.js'; + +const string_ = fs.readFileSync('benchmark/fixture.txt', 'utf8'); +const regex = /^(?:\d{2}\.){2}4\d{4}/; + +// `str.matchAll` VS `matches` +const gRegex = new RegExp(regex, 'gm'); + +console.time('str.matchAll'); +const r1 = []; +for (const match of string_.matchAll(gRegex)) { + r1.push(match); +} + +console.timeEnd('str.matchAll'); + +console.time('matches'); +const r2 = []; +for (const match of matches(gRegex, string_)) { + r2.push(match); +} + +console.timeEnd('matches'); + +console.time('matches-t500'); +const r3 = []; +for (const match of matches(gRegex, string_, {timeout: 500})) { + r3.push(match); +} + +console.timeEnd('matches-t500'); + +// `str.match` VS `firstMatch` +const rows = string_.split('\n'); + +console.time('str.match'); +const r4 = rows + .map(row => row.match(regex)) + .filter(match => match !== null); +console.timeEnd('str.match'); + +console.time('firstMatch'); +const r5 = rows + .map(row => firstMatch(regex, row)) + .filter(match => match !== undefined); +console.timeEnd('firstMatch'); + +console.time('firstMatch-t500'); +const r6 = rows + .map(row => firstMatch(regex, row, {timeout: 500})) + .filter(match => match !== undefined); +console.timeEnd('firstMatch-t500'); + +console.log(` + Count chars: ${string_.length} + Count rows: ${rows.length} + Count matches: ${r1.length} ${r2.length} ${r3.length} ${r4.length} ${r5.length} ${r6.length} +`); diff --git a/index.js b/index.js index 2447628..bcf28e7 100644 --- a/index.js +++ b/index.js @@ -9,9 +9,11 @@ const resultToMatch = result => ({ input: result.input, }); +const context = {}; + export function isMatch(regex, string, {timeout} = {}) { try { - return functionTimeout(() => structuredClone(regex).test(string), {timeout})(); + return functionTimeout(() => structuredClone(regex).test(string), {timeout, context})(); } catch (error) { if (isTimeoutError(error)) { return false; @@ -23,7 +25,7 @@ export function isMatch(regex, string, {timeout} = {}) { export function firstMatch(regex, string, {timeout} = {}) { try { - const result = functionTimeout(() => structuredClone(regex).exec(string), {timeout})(); + const result = functionTimeout(() => structuredClone(regex).exec(string), {timeout, context})(); if (result === null) { return; @@ -52,6 +54,7 @@ export function matches(regex, string, {timeout = Number.POSITIVE_INFINITY, matc while (true) { // `matches.next` must be called within an arrow function so that it doesn't loose its context. const nextMatch = functionTimeout(() => matches.next(), { + context, timeout: (timeout !== Number.POSITIVE_INFINITY || matchTimeout !== Number.POSITIVE_INFINITY) ? Math.min(timeout, matchTimeout) : undefined, }); diff --git a/package.json b/package.json index 60fdea6..e71708f 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "node": ">=18" }, "scripts": { - "test": "xo && ava && tsd" + "test": "xo && ava && tsd", + "benchmark": "node benchmark/index.js" }, "files": [ "index.js",