ARK Utilities - Membuat ARK Ecosystem Faster

in #arkindonesia7 years ago

pj24qaywp5.png

ARK Utilities adalah perpustakaan terpisah yang menyediakan fungsi umum untuk bekerja dengan data (menyortir, memfilter, ...) dan melakukan tugas-tugas umum. Semua fungsi di ARK Utilities akan menggunakan kerangka kerja benchmark yang dirancang khusus untuk memastikan itu adalah kandidat terbaik di masing-masing bidang

ARK Utilities secara signifikan meningkatkan kecepatan dan kinerja di seluruh ARK Core, dan postingan ini akan membahas detail teknis sambil juga menunjukkan peningkatan persentase pengujian aktual.

ARK Core telah berkembang pesat selama setahun terakhir. Dengan basis kode baru yang aman dan fondasi yang tepat untuk upaya pengembangan kami di masa depan, kami sekarang dapat fokus pada mengoptimalkan beberapa fungsinya untuk kinerja keseluruhan yang lebih baik. Karena itu, kami telah membuat perpustakaan khusus baru bernama ARK Utilities dengan tujuan untuk menyediakan berbagai pilihan algoritma yang biasa digunakan yang disesuaikan dengan kinerja.

Utilitas ARK tersedia di: https://github.com/ArkEcosystem/utils
Dengan memperkenalkan lapisan dependensi baru ini, kami dapat mengganti banyak dependensi pihak ketiga di Core dengan @arkecosystem / utils karena yang sekarang akan menjadi bagian dari perpustakaan ARK Utilities. Selain itu, kami sekarang dapat menyediakan API umum. Ini memungkinkan kami untuk menukar atau membuat perubahan pada implementasi saat kami mengidentifikasi masalah kinerja dan kekurangan lainnya, tanpa mempengaruhi API.

ARK Utilities ditulis dalam TypeScript dan memperlihatkan fungsi yang biasa digunakan sambil menyembunyikan implementasi konkret. Ini sepenuhnya akan digunakan dengan pembaruan Core v2.1 kami yang akan datang, dan secara bertahap akan mendapatkan utilitas tambahan saat kami memperkenalkan serangkaian fungsi yang dioptimalkan. Ini juga akan membantu proyek-proyek lain (non-ARK) untuk memanfaatkan perpustakaan ini karena akan terlepas dari kode Inti kami.

Kami ingin mengundang setiap dan semua proyek yang ingin membantu meningkatkan cakupan keseluruhan fungsi dan perpustakaan crypto yang umum digunakan untuk menyarankan peningkatan, membuka masalah GitHub, atau memberikan permintaan menarik jika mereka memiliki ide untuk bagaimana kita dapat meningkatkan perpustakaan. Kami akan meletakkan batu bata pertama dengan rilis kami yang akan datang dan kami berharap orang lain di komunitas blockchain yang lebih besar akan membantu kami terus membangun ARK Utilities menjadi sumber daya yang kuat untuk seluruh industri.

Apa saja fungsi-fungsi ini?
Banyak kode kami menggunakan perpustakaan lodash yang populer. Seperti yang mungkin sudah Anda ketahui, lodash tidak dikenal memiliki kinerja terbaik, jadi kami mulai dengan mengganti beberapa fungsi dengan alternatif yang terbukti lebih cepat di benchmark kami. Berikut adalah beberapa contoh yang akan menjadi bagian dari ARK Utilities yang baru:

  • ARK Utilities memanfaatkan beberapa algoritma dari perpustakaan Fast.JS yang menyediakan versi kinerja lebih tinggi dari banyak fungsi JavaScript umum (peta, filter, ...).

  • Untuk mengurutkan kami beralih dari sortash Lodash ke Sort Cepat. Saat kami mengekspos API yang sama seperti sebelumnya, kami hanya perlu mengubah pernyataan impor untuk mendapat manfaat darinya.

Sementara kita masih melakukan tolok ukur dan pengukuran, kita dapat mengatakan bahwa sejauh ini semuanya lebih cepat daripada lodash.

Secara teori itu terdengar hebat, tetapi beri kami angka aktual!
Angka-angka konkret dapat lebih baik menunjukkan tingkat peningkatan aktual jadi di sini adalah beberapa hasil kinerja yang telah kita lihat. Angka-angka ini menunjukkan peningkatan dalam beberapa fungsi yang berbeda dan diambil dari lingkungan kerja nyata, dan data dari ARK Network yang sebenarnya. Kami ingin mencatat bahwa peningkatan ini menjadi lebih jelas dengan set data yang lebih besar dan% peningkatan kinerja dalam beberapa kasus naik sebanyak 12x.

Utils.camelCase vs lodash.camelCase
✓ utils x 20.166.554 ops / dt ± 2.98% (78 run sampel)
✓ lodash x 402.498 ops / detik ± 1,33% (88 run sampel)
Hasil: utils adalah 4910,35% lebih cepat dari lodash.
Utils.orderBy vs lodash.orderBy (10 item)
✓ utils x 1.842.682 ops / dt ± 1.73% (81 run sampel)
8✓ lodash x 760.114 ops / dt ± 1.73% (82 run sampel)*
Hasil: utils adalah 142,42% lebih cepat dari lodash.
Utils.orderBy vs lodash.orderBy (100 item)
✓ utils x 410.181 ops / detik ± 1.23% (87 run sampel)
✓ lodash x 151.037 ops / dtk ± 1.58% (85 run sampel)
Hasil: utils adalah 171,58% lebih cepat dari lodash.
Utils.orderBy vs lodash.orderBy (1000 item)
✓ utils x 52.281 ops / dt ± 0.68% (93 run sampel)
✓ lodash x 17.441 ops / dt ± 1.55% (89 run sampel)

Hasil: utils adalah 199,76% lebih cepat dari lodash.
Utils.orderBy vs lodash.orderBy (10000 item)
✓ utils x 5,282 ops / dt ± 0,48% (91 run sampel)
✓ lodash x 1,530 ops / dt ± 2,43% (83 run sampel)

Hasil: utils adalah 245,26% lebih cepat dari lodash.
Utils.orderBy vs lodash.orderBy (100000 item)
✓ utils x 538 ops / dt ± 0,80% (89 run sampel)
✓ lodash x 80,41 ops / dt ± 1,65% (64 run sampel)

Hasil: utils adalah 569,48% lebih cepat dari lodash.
Utils.sortBy vs lodash.sortBy (10 item)
✓ utils x 1.921.146 ops / dt ± 1.33% (87 run sampel)
✓ lodash x 723.453 ops / dt ± 2.61% (78 run sampel)

Hasil: utils adalah 165,55% lebih cepat dari lodash.
Utils.sortBy vs lodash.sortBy (100 item)
✓ utils x 325.372 ops / dt ± 0.52% (92 run sampel)
✓ lodash x 153.786 ops / dt ± 1.49% (87 run sampel)

Hasil: utils adalah 111,57% lebih cepat dari lodash.
Utils.sortBy vs lodash.sortBy (1000 item)
✓ utils x 34.702 ops / dt ± 0.92% (91 run sampel)
✓ lodash x 16.023 ops / dt ± 1.37% (86 run sampel)

Hasil: utils adalah 116,58% lebih cepat dari lodash.
Utils.sortBy vs lodash.sortBy (10000 item)
✓ utils x 3.562 ops / dt ± 0.46% (93 run sampel)
✓ lodash x 1,529 ops / dt ± 2,14% (83 run sampel)

Hasil: utils adalah 132,94% lebih cepat dari lodash.
Utils.sortBy vs lodash.sortBy (100000 item)
✓ utils x 363 ops / dt ± 0,47% (88 run sampel)
✓ lodash x 71,07 ops / dt ± 2,94% (58 run sampel)

Hasil: utils 411,23% lebih cepat dari lodash.
Native.map vs Utils.map vs lodash.map (10 item)
✓ asli x 23.282.872 ops / detik ± 1,55% (80 run sampel)
✓ utils x 41.298.044 ops / detik ± 1,95% (81 run sampel)
✓ lodash x 6.841.156 ops / dt ± 1.17% (87 run sampel)

Hasil: utils adalah 77,38% lebih cepat dari asli.
Native.map vs Utils.map vs lodash.map (100 item)
✓ asli x 2.411.309 ops / detik ± 1.09% (89 run sampel)
✓ utils x 5.051.863 ops / dt ± 4.03% (84 run sampel)
✓ lodash x 751.676 ops / detik ± 1,61% (87 run sampel)

Hasil: utils adalah 109,51% lebih cepat daripada asli.
Native.map vs Utils.map vs lodash.map (1000 item)
✓ asli x 245,745 ops / detik ± 3,92% (77 run sampel)
✓ utils x 458.229 ops / detik ± 2.00% (85 run sampel)
✓ lodash x 80.584 ops / dt ± 1.19% (90 run sampel)

Hasil: utils adalah 86,47% lebih cepat daripada asli.
Native.map vs Utils.map vs lodash.map (10000 item)
✓ asli x 28.034 ops / detik ± 1,44% (87 run sampel)
✓ utils x 45.515 ops / dt ± 1.35% (86 run sampel)
✓ lodash x 8.094 ops / dt ± 0.95% (90 run sampel)

Hasil: utils lebih cepat 62,36% dari aslinya.

Berikut adalah contoh lain untuk menunjukkan peningkatan ini pada skala. Kami meningkatkan jumlah sampel ke angka yang lebih tinggi dan menguji pengurutan 100.000 dompet dengan urutan menurun. Dalam hal ini, fungsi utilitas lebih cepat 639,44% dari lodash. Seiring kami terus tumbuh, peningkatan kinerja hanya akan semakin terlihat.

Utils.sortByDesc vs lodash.sortByDesc (100000 dompet)
✓ utils x 533 ops / dt ± 0,48% (87 run sampel)
✓ lodash x 72,12 ops / dt ± 2,40% (59 run sampel)

Hasil: utils adalah 639,44% lebih cepat dari lodash.

Bagaimana saya menggunakannya?

Utilitas ARK tersedia di: https://github.com/ArkEcosystem/utils

Instal sebagai ketergantungan:

benang tambahkan @ arkecosystem / utils

Dan impor fungsi dari @arkecosystem / utils:

TypeScript:
impor {sortBy} dari “@ arkecosystem / utils”;

Dengan ARK Core sekarang membentuk fondasi yang kokoh untuk dibangun, kami bersemangat untuk mulai memperkenalkan serangkaian optimisasi utama yang akan meningkatkan efisiensi dan meningkatkan tingkat kinerja, menjadikan ARK Platform semakin kuat. Meskipun ini hanyalah peningkatan awal, kami telah melihat peningkatan drastis dalam kinerja dan bermaksud untuk terus meningkatkan perpustakaan ARK Utilities kami.

Jika Anda adalah pengembang komunitas ARK atau penggemar blockchain, kunjungi Github kami dan mulai berkontribusi sekarang untuk membantu kami meningkatkan alat ini. Jangan lupa untuk memeriksa Program Bounty Github kami yang baru diperbarui untuk mengetahui bagaimana Anda bisa mendapatkan ARK dengan mendukung upaya pengembangan kami dan berkontribusi pada kode!

Sumber : BoldNinja


@yayan

39eup3jxp4.gif

Sort:  

Senang membaca artikel anda, menarik sekali untuk bergabung

Posted using Partiko Android

Thanks for using eSteem!
Your post has been voted as a part of eSteem encouragement program. Keep up the good work! Install Android, iOS Mobile app or Windows, Mac, Linux Surfer app, if you haven't already!
Learn more: https://esteem.app
Join our discord: https://discord.gg/8eHupPq

Coin Marketplace

STEEM 0.04
TRX 0.33
JST 0.091
BTC 62612.44
ETH 1757.10
USDT 1.00
SBD 0.39