26

Adam Klobukowski napisał/a:

Język dynamiczny ma szanse być wydajniejszy, ale tracing jit ma jedną wadę - wydajniejszy będzie dopiero po kilku przejściach kodu, co w niektórych zastosowaniach jest niezadowalające lub wręcz niedopuszczalne.

Słyszę takie gadanie od 10 ponad lat. Java miała być szybsza od c++ "już za dwa miesiące" i nic... Prosiłbym o jakieś konkretne przykłady na to, że kod napisany w pythonie[lub wstaw dowolny język] wykonuje się szybciej niż kod napisany w c++.

What can be asserted without proof can be dismissed without proof.

Laoo: tylko że w C++ to są takie protezy i potworki składniowe że szkoda gadać :/ Krzywa trudności nauki stroma jak Mannerhorn ;)

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

28

syscall napisał/a:

Moze mi ktos po krotce strescic o co sie klocicie? Bo serio nie wiem.

O to kto jest "najprofesjonalniejszym" zawodowcem na tym całym forum :D

PS. uważam, że osoby, które nie wypuściły na atari żadnego dema powinny mieć zakaz wypowiadania się w temacie programowania na cokolwiek :)

What can be asserted without proof can be dismissed without proof.

29

Nikt nie każe Ci pisać bibliotek. W C++ można pisać prosto i wg mnie nawet łatwiej niż w C. Śmieszy mnie np co ostatnio przeczytałem, że Torvalds stwierdził, że goto w C jest dobre, oczywiście wywiązała się kłótnia, ale po wielu sporach okazało się, że w takim kernelu goto używają do czyszczenia w przypadku błędów (goto clean; itd), co w C++ dzieje się automatycznie dzięki wyjątkom i destrukcji obiektów przy zwijaniu stosu. Ot twardogłowość starych wyjadaczy...

30

sqward napisał/a:

...Prosiłbym o jakieś konkretne przykłady na to, że kod napisany w pythonie[lub wstaw dowolny język] wykonuje się szybciej niż kod napisany w c++...

Oj, oj...zgodnie z tezą "powiedz jaki ma być wynik a znajdziemy odpowiedni benchmark" zawsze można podać "właściwy" przykład.

Goto, jak każde narzędzie, może być użyteczne. No ale jest to ostre narzędzie dlatego młodym programistom mówi się żeby się nim nie bawili. Wyjątki w C++ też są fajne, lecz są jednym z głównych powodów dla których ciężko napisać w C++ jądro systemu operacyjnego (nie mówię że niemożliwe).

Sqward: tracing jit w V8 (engine JS w Chrome) powoli zbliża się do szybkości gcc, a nawet je przebija.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

32

Adam: to samo słyszę o Javie od lat. Konkrety proszę :)

What can be asserted without proof can be dismissed without proof.

Sqward: nie Java ale JavaScript.
http://wingolog.org/archives/2011/06/10 … r-than-gcc
http://wingolog.org/tags/v8

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

34

Na serio to jest ?

function g () { return 1; }
function f () {
  var ret = 0;
  for (var i = 1; i < 10000000; i++) {
    ret += g ();
  }
  return ret;
}

I benchmark na dodatek bierze pod uwagę czas kompilacji. Poproszę jakieś prawdziwe przykłady, prawdziwych aplikacji.

What can be asserted without proof can be dismissed without proof.

No, jako że JS wymaga kompilacji, branie pod uwagę czasu kompilacji ma pewien sens. Benchmark może trochę syntetyczny ;) ale poczytaj w drugim linku - gościu naprawdę mądrze pisze.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

36

To może dzięki takiej technologii osiagniemy 120% mocy atari na atari ? :D

What can be asserted without proof can be dismissed without proof.

37

co do mocy i to ciemnej strony mocy:

http://www.youtube.com/watch?v=xsymZCFz … re=related

dajcie sobie na luz

gep/lamers^dial

38 Ostatnio edytowany przez jellonek (2012-01-18 01:08:28)

sqward: http://morepypy.blogspot.com/2011/08/py … tring.html
btw. nie chodzi o "python szybszy niz c", a bardziej o pypy szybsze niz gcc. w obu przypadkach nie chodzi o jezyk, a konkretna implementacje...

Adam: js wymaga kompilacji? troche bluznisz...

ps. ztcp v8 nie ma tracingu (jak np. tracing monkey, czy luajit2, czy pypy) tylko cos w stylu statycznego aot. co to zmienia? raz przetranslowany kod nie jest juz profilowany/optymalizowany, wiec jesli z czasem jakas sciezka wykonania stanie sie mniej optymalna - kicha.
tak na prawde w tym jednym przypadku tracing moze okazac sie szybszy niz statycznie optymalizowany kod (jak np. w gcc)

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

jellonek: js nie wymaga kompilacji per se, ale wszystkie najszybsze implementacje to kompilatory jit.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

Tak przy okazji: http://goldns.ru/cppmap-2012.png

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

41

sliczne!

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

42

Się ktoś narobił....oj jak się narobił...jak pisząc program w C++ :)

43

Ms wypuścił speca C++AMP

Na pierwszy rzut oka nieźle skomplikowane.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

45

Te wszystkie wrappery na dane mogą być onieśmielające, ale nie ma nic za darmo :)

Myślę sobie jakie to ma szanse się przyjąć. Myślę że niewielkie. Najbardziej, to w różnych aplikacjach (Photoshop, itp). W grach to się chyba nie przyda.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

47

Idea jest taka, aby dać relatywnie proste w obsłudze i generyczne narzędzie do "masywnych" obliczeń, bez uciekania się do explicite heterogenicznych rozwiązań typu Cuda, OpenCL itd. Zapotrzebowanie jak widać jest, skoro wspomniane rozwiązania całkiem nieźle się rozwijają (np jakaś wersja gimpa używa chyba OpenCLa). C++AMP ma robić to samo, tylko bardziej kompaktowo, ukrywając tę heterogeniczność za parawanem runtime'u, tak, aby programista nie musiał zaprzątać sobie tym głowy. Rozwiązanie jest na tyle przyjazne, że w ramach prezentacji do jednego komputera włożyli jedną kartę nVidii i jedną ATI i program enumerujący akceleratory po prostu podzielił po równo obliczenia pomiędzy obie karty i to po prostu działało.

No właśnie o to mi chodzi: tam gdzie warto to ukryć (wszelkie pluginy do Gimpa czy Photoshopa) i w miarę łatwo to zrobić, tam się to nada. Do bardziej wymagających zastosowań (przede wszystkim gry) się to nie nada, bo tam potrzeba większej kontroli nad tym co się liczy, gdzie i kiedy.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

49

W przypadku gier przeważającym wg mnie argumentem przeciw temu rozwiązaniu mogłyby być istniejące powiązania pomiędzy bibliotekami. W Direct3D DirectCompute jest w naturalny sposób wpleciony w resztę potoku renderującego i chociażby żeby nie pisać specjalnych mechanizmów dbających o synchronizację i spójność danych łatwiej jest przeprowadzać obliczenia tak samo jak resztę renderowania właśnie za jego pomocą. Wydaje mi się, że podobnie jest w przypadku komba OpenGL + OpenCL. Ale przypuszczam, że C++AMP może wyprzeć CUDĘ, której targetem są właśnie takie obliczenia niezależne od grafiki, co w C++AMP robi się bardziej wprost.

Z tym że gry zazwyczaj nie są aż tak wymagające obliczeniowo, pomijając grafikę 3D oczywiście. Zaś jak już do samej grafiki dochodzi, to wydaje mi się że tu każdy twórca gier wolałby mieć cała kartę graficzna tylko do tego, aby było jak najpłynniej.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio