webForumDet fria alternativet

Kvickast

7 svar · 335 visningar · startad av gucken

guckenMedlem sedan sep. 2001287 inlägg
#1

Tjenare, det har på senare tid vart ett fruktat tjat om vilket språk som är lämpligast att proggramera i och jag undrar nu igentligen hur mycket snabbare c++ är gämfört med ex java.

ChainsawMedlem sedan sep. 20001 124 inlägg
#2

Inte alls, skulle jag vilja säga. Java har ett enormt mycket större förberett klassbibliotek med alla möjliga prylar klara att använda. Dessutom är de klasserna standardiserade över alla Java-plattformar, vilket man knappast kan säga om annat än STL för C++.

Därför tycker jag personligen att Java är betydligt snabbare att utveckla i jämfört med C++.

Om du menar exekveringstid och inte utvecklingstid: Java är snabbare. Läs här: http://www.aceshardware.com/read.jsp?id=153

ToonsterMedlem sedan feb. 20001 590 inlägg
#3

Beror på vad det är du tänkt dig för applikation. Är det en vanligt Windowsprogram, eller är det ett program som kräver plattformsoberoende. Är det multimediaintensivt, kräver det viss hårdvara osv.

Är det Windowsplattformen som gäller, så är det utan tvekan ren kompilerad kod som gäller, kanske inte nödvändigtvis C++. Dels slipper man vara beroende av att klienten har Java stöd, dels slipper man ett extra lager av en virtuell maskin. (ett Java program blir aldrig snabbare eller effektivare än vad den installerade JVM'en är)

Men, om det är ett krossplattformsprojekt, så är Java värt att satsa på, då det är själva vitsen med det hela.

Det finns iof. en hel del portningsverktyg, som kan porta ett C++ program till olika plattformar och op-system, fast det brukar vara en ganska kunskapskrävande och dyrbar process, som stora feta företag (typ där jag jobbar) sysslar med.

Det bästa du kan göra är att testa själv, skriv några Java program, skriv några C++ program och jämför (gärna prestandan, den märker du nog direkt...)

BeatboxMedlem sedan okt. 20013 217 inlägg
#4

Även det finns Java kompilatorer som genererar native x86 maskinkod så får man inte glömma den lååånga historien som C++ kompilatorer har bakom sig och i dagsläget så genererar dom väldigt effektiv kod och inte så mycket overhead förutsatt att man är medveten om vissa saker då man kodar C++. Javas mål va ju att gå under en virutell maskin och jag kan tänka mig att denna virtuella CPU skulle va så enkel som möjligt pga prstandaskäl.

ChainsawMedlem sedan sep. 20001 124 inlägg
#5

BeatBox: Läs länken som jag lade in ovanför. En jämförelse mellan kod som körs i en JVM och kompilerad C-kod. Ganska roliga resultat.

BeatboxMedlem sedan okt. 20013 217 inlägg
#6

Som sagt var så är det ju beroende på hur man använder språket. Att hantera stora arrayer kan ju göras på rätt många sätt och testet säger inget om vilket av sätten som användes då han utvärderade MS C++ (jag pratar inte om operativspecifika saker). Jag tycker det är lite konstigt att dr slutsatsen att det ena är bättre än det andra enbart baserat på aritmetriska operationer. Hur ofta sysslar man med sånt i verkligheten om man inte är fysiker eller nått ?

developerMedlem sedan aug. 2001458 inlägg
#7

Beatbox skrev:

Som sagt var så är det ju beroende på hur man använder språket. Att hantera stora arrayer kan ju göras på rätt många sätt och testet säger inget om vilket av sätten som användes då han utvärderade MS C++ (jag pratar inte om operativspecifika saker). Jag tycker det är lite konstigt att dr slutsatsen att det ena är bättre än det andra enbart baserat på aritmetriska operationer. Hur ofta sysslar man med sånt i verkligheten om man inte är fysiker eller nått ?

Jag håller absolut med Beatbox. Jag tror lätt man skulle kunna bevisa att C++ är snabbare än Java beroende på hur man gör undersökningen.

Jag tror (baserat på den kod jag sett, vilket är en ansenlig mängd) dock att de flesta utvecklare som finns skriver snabbare (exekveringstid) kod i Java än de hade gjort i C++.

En stor anledning är att en hyfsat bra garbage collector (som normala JVM:er har) är effektivare än C-Runtimen när man heap-allokerar minne. Det är en klassiker att ett naivt skrivet C/C++ program tillbringar en stor del av tiden med att allokera och frigöra minne. Med ett bra skrivet C/C++ program som inte belastar heapen utan istället återanvänder buffertar i hög grad och allokerar på stacken när det är möjligt, kan man undvika detta.

PeWMedlem sedan juni 200010 432 inlägg
#8

Java har ett enormt mycket större förberett klassbibliotek med alla möjliga prylar klara att använda.

...som är mer eller mindre lämpliga att använda ur prestandasynpunkt (t.ex hashtabeller och sorteringsalgoritmerna)

Tycker ändå att det är ganska löjligt att jämföra två olika språk med avseende på prestanda. Det beror ju helt på vad man utvecklar för nåt. Det vore ju rent av fånigt att skriva rutiner till sitt spel med avseende på grafikrutiner som laddar paletter, i Java ;)

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)