Koazee vs Go-Funk va Go-Linq

Ushbu maqolaning maqsadi - Koazee va ikkita taniqli Golang ramkalari bilan ishlash uchun taqqoslashni ta'minlash: Go-Funk va Go-Linq.

Manbalar

  • Koazee: https://github.com/wesovilabs/koazee
  • Go-Linq: https://github.com/ahmetb/go-linq
  • Go-Funk: https://github.com/thoas/go-funk

Qiyoslash taqqoslash uchun ishlatiladigan omborni mening Github tashkilotimdan topishingiz mumkin, https://github.com/wesovilabs/koazee-comparison

Taqqoslash

Qiyoslash testlarini o'zingizning kompyuteringizdan amalga oshirishingiz mumkin, kodni shu erdan yuklab olishingiz mumkin

Bu taqqoslash uchun men 3 ta ramka ibtidoiy tipdagi qatorlar bilan qanday bog'liqligini ko'rib chiqdim.

Quyidagi grafik har bir sinov uchun ramka ishlarining qanday bajarilishini ko'rsatadi:

Eksa-y har bir operatsiyada n / op ni va eksa-x har xil testlarni ko'rsatadi. Ko'rayotganimizdek, Koazidagi spektakl barcha stsenariylarga qaraganda ancha yaxshi.

Sinovlar quyida tasvirlangan:

  • Jami: 5000 ta tasodifiy raqamga ega bo'lgan massivni keltirsak, uning barcha elementlarining yig'indisini topishimiz kerak.

Koazee: 18014 ns / op GoLinq: 239511 ns / op GoFunk: 2096351 ns / op

  • Duplikatsiya: 5000 ta tasodifiy raqamlarga ega bo'lgan qatorni berilgan holda, biz har bir elementni 2 ga ko'paytirgan boshqa qatorni qaytarishimiz kerak.

Koazee: 28762 ns / op GoLinq: 456650 ns / op GoFunk: p1816872 ns / op

  • Teskari: 5000 tasodifiy raqamga ega bo'lgan massiv berilgan bo'lsa, biz raqamlarning ketma-ketligini o'zgartirishimiz kerak

Koazee: 21462 ns / op GoFunk: 167916 ns / op GoLinq: 503982 ns / op

Saralash: 5000 ta tasodifiy raqamlarga ega bo'lgan qatorni berilgan tartibda ko'tarilgan elementlar bilan bir qatorni qaytarishimiz kerak.

Koazee: 570380 GoLinq: 1882618 ns / op

(*) Ehtimol, bu mening aybim, lekin men bu harakatni GoFunk-da amalga oshirish uchun yo'l topmadim

Filtr: 5000 tasodifiy massiv berilganida biz faqat g'alati elementlardan iborat bo'lgan qatorni qaytaramiz.

Koazee: 111382 ns / op GoLinq: 326412 ns / op GoFunk: 1748583 ns / op

Tarkibida: 5000 ta tasodifiy sonlarga ega bo'lgan massiv, agar oxirgi holatda element topilgan yoki topilmagan bo'lsa, biz qaytishimiz kerak

Koazee: 3607 ns / op GoFunk: 248290 ns / op GoLinq: 107764 ns / op

Bir nechta operatsiyalar: 5000 tasodifiy satrlarga ega bo'lgan bir qatorni hisobga olgan holda, biz quyidagi amallarni bajarishimiz kerak:

  • Ko'tarilgan satrlarni tartiblang
  • Qatorlarning ketma-ketligini teskari aylantiring
  • Massivni filtrlang va 4 ga teng bo'lmagan so'zlarni olib tashlang.
  • Satrlar qatorini int qatoriga aylantiring, bu erda yangi elementlar so'zning uzunligi bo'ladi. (Shubhasiz, yangi qatorning barcha elementlari oldingi bosqichda qo'llanilgan filtrdan keyin 4 bo'ladi)
  • Barcha elementlarni yig'ing

Koazee: 2447864 ns / op GoLinq: 3096456 ns / op

(*) GoFunk operatsiyalarni birlashtirish usulini ta'minlamaydi

Xulosalar

  • Koazee eng yoshi va u taqdim etgan operatsiyalarning sifati past. Aslida men kodlashni boshlaganimdan bir oy o'tib, ko'p vaqtimni ishlashni yaxshilashga qaratdim.
  • Koazidagi o'yin juda yaxshi ekanligi aniq.
Yangi operatsiyalarni amalga oshirish juda oson, boshqalarga qaraganda yaxshiroq qilish - bu eng murakkab qism
  • Koazee bizga kutilganidek ishlamagan taqdirda xatoni beradi, uni eng xavfsiz kutubxonaga aylantiradi.
  • GoFunk Koazee yoki GoLinq singari operatsiyalarni muvofiqlashtirish uchun do'stona usulni ta'minlamaydi.
  • Koazee siz o'zingizning operatsiyalaringizni aniqlayotganda sizni vazifalarni kirishga majburlamaydigan yagona narsa.
Kelajakda Koazee v0.0.3 chiqishi uchun men seriallarga nisbatan boyroq operatsiyalar to'plamini taqdim etmoqchiman. lekin har doim, eng yaxshi ishlashni ta'minlashga qaratilgan.

Agar sizga loyiha, maqola yoqsa yoki ushbu loyiha qo'llab-quvvatlanishga loyiq deb o'ylasangiz, uni o'z tarmoqlaringizda baham ko'rsangiz, maqolani tvitlashingiz yoki Github-dagi omborxonani yulduzcha bilan belgilab qo'ysangiz juda minnatdorman.