Portál AbcLinuxu, 1. května 2025 04:46
V diskusi pod článkem o lua na rootu je odkaz na jeden benchmark skriptovacích jazyků. Řekněme si na rovinu, že zvolená úloha je pro skriptovací jazyky zcela nevhodná. Nicméně mě zajímalo jak na tom bude erlnag, pro který je taková úloha snad ještě nevhodnější. Výsledkem jsem byl docela překvapen. HiPe verze erlangu se překvapivě dostala s relative speed 14.75 mezi Java 1.4.2 a Io 20070410 Vector a bez HiPe s relative speed 47.5 mezi Lua 5.1 a ocaml bytecode 3.09.2. To rozhodně není špatné.
Zdrojový kód mandelbrot.erl:
-module(mandelbrot). -export([start/0]). -define(BAILOUT, 16). -define(MAX_ITERATIONS, 1000). start() -> statistics(runtime), outher(), erlang:element(2, statistics(runtime))/1000. mandelbrot(X,Y) -> mandelbrot(Y - 0.5, X, 0.0, 0.0, 1). mandelbrot(CR, CI, ZR, ZI, I) when I < ?MAX_ITERATIONS -> TEMP = ZR*ZI, ZR2 = ZR*ZR, ZI2 = ZI*ZI, if ZR2+ZI2 > ?BAILOUT -> I; true -> mandelbrot(CR, CI, ZR2-ZI2+CR, 2*TEMP+CI, I+1) end; mandelbrot(_CR, _CI, _ZR, _ZI, _I) -> 0. inner(Y) -> inner(Y, -39). inner(Y, X) when X < 39 -> A = mandelbrot(X/40, Y/40), % io:put_chars([if A == 0 -> $+; true -> $ end]), inner(Y,X+1); inner(_Y, _X) -> % io:nl(), ok. outher() -> outher(-39). outher(Y) when Y < 39 -> inner(Y), outher(Y+1); outher(_Y) -> ok.
Tiskni
Sdílej:
Pouze stručně. 1. Původní citovaný test udává výsledky v sukundách v čem asi já.A kdo to má čuchat? Upadla by pazourka to napsat? Obzvláště pokud to píšete pod blog ve kterém jsou údaje vztažené ku rychlosti implementace v C přeložené pomocí gcc. Stejně tak, k čemu jsou nám údaje v sekundách alébržto údaj absolutní?
2. Jasně píši o testu ve vývojovém prostředí (Eclipse). Zde je výstup přesměrován do okna v rámci eclipse. Nejde tudíž o rychlost IO Javy jako takové, else efektivitu použitých rour. To na co jsem ctěl upozornit je to, že můj výsledný čas na vlastní test bez výstupu činní asi 5 procent času testu s výstupem.No to máte pěkně blbé, jelikož v mnou provedených měřeních výstup vždy činil kolem 10% a to jak lua, gcc i erlang a výsledky jsem vždy porovnával bez výstupu. Ale to vy jste ve své vrozené genialitě samozřejmě nemohl předpokládat, že. Místo aby jste se zamyslel, proč vám vychází tak podivné výsledky, a nepředpokládal, že všichni kolem vás jsou naprostí pitomci a hlupáci, tak nám tu předvádíte jaký jste borec. Už ta první věta. Abych to parodoval: Přiznám se, že mne tito borečci vždy fascinují. Jsou totiž schopni strhat prakticky cokoliv. Přijdou někam, začnou vykřikovat svoje moudra, aniž by si cokoli ověřili. Provedou test chybně a ze stejné chyby obviní všechny kolem, protože jen oni jsou přece ti nejchytřejší.
V původním testu byla java s výstupem 2x rychlejší než je můj naměřený výsledek s výstupem na konzolu. Myslím si že vlastní jádro testovacího programu bez výstupů spotřebovalo přibližně stejný čas a proto vlastně původní test měřil rychlest výstupů.Předpokládáte? Víte co, raději nic nepředpokládejte. Ověřujte si. Já jsem si ověřil, že poměr mezi lua a gcc verzí ať už s výstupem, nebo bez, vždy kozistentně odpovídá v testu uvedeným cca 30 a i erlang mi podával konzistentní hodnoty ve stejném poměru s výstupem i bez a tak jsem, na rozdíl od vás, nepředpokládal, že autor testu je úplný pitomec a jenom já jsem letadlo.
Předpokládaný čas výstupů bych odhadl na cca 90 procent z celkového času (Minimálně o Javy).Ha, první pochyby. Jaký záblesk inteligence.
Skutečně vypovídající test.Skutečně vypovídající test a past na hlupáky.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.