Kezdőoldal » Számítástechnika » Programozás » Gyorsabb a C nyelven írt...

Gyorsabb a C nyelven írt program a C++ -ban írtnál?

Figyelt kérdés

2015. júl. 22. 15:10
1 2
 11/15 anonim ***** válasza:

# 9/9 Időpont ma 22:52


Nem azt írtam, hogy a C++ nyelv gyorsabb (belemehetnénk ebbe is de ennél az én időm is drágább), hanem azt, hogy a C++ előnnyel indul. Mégpedig azzal az előnnyel, hogy egy virtuális gép alapvetően egy extra "réteg", ami a C++-nál nincs meg. Egy extra rétegen keresztül pedig alapjában véve lassabban fogod elérni a hardvert.


Lehet belekeverni optimalizálást, de abban se lehetsz biztos, hogy egy optimalizált Java gyorsabb egy optimalizálatlan C++-nál.


A fejlesztő, a hardver és minden egyéb tényező pedig nem független, de jelentéktelen, és csak mérhető, de nem előre meghatározható.


Éppen ezért fogalmaztam úgy, hogy a C++ előnnyel indul (amit ledolgozhat a Java, de köröket nem fog ráverni az biztos), nem pedig úgy, hogy egyértelműen, minden esetben gyorsabb.

2015. júl. 23. 23:27
Hasznos számodra ez a válasz?
 12/15 anonim ***** válasza:

> Ellenben a JVM (és más nyelvek) JIT compilere képes az aktuális futási környezethez 100%-ban igazodóan optimalizálni a programot, míg az előre fordított program maximum közös nevezőhöz köthető, ami nagyon nem optimális.


Keress rá hogy function multiversioning. Képzeld el, hogy lehet azonosítani a hardware-t x86-os architektúrán, és annak a processzornak megfelelő kódot generálni. Ugyanezt meg lehet csinálni különböző dll-ek betöltésével futásidőben, amik egy-egy processzorra vannak optimalizálva. Aminek csak annyi overhead-je van mint a dll használat és a Java JIT-je nem optimalizálhat annyira hiszen az a futást lassítaná.


[link]

2015. júl. 24. 06:59
Hasznos számodra ez a válasz?
 13/15 anonim ***** válasza:

#12: Ez igaz, de ebből sem találsz minden CPUID-nak megfelelőt, csak közelítéssel. Ettől függetlenül persze kiváló módszer a (fél-)dinamikus optimalizációra, és a runtime overheadje is minimális; ezutóbbival egy akármilyen JIT handicappel indul.


Visszakanyarodva az eredeti kérdéshez: Mint látod, kedves kérdező, nincs sok értelme a kérdésednek azon felül, hogy potenciálisan vitát generál. Tapasztalataim alapján tartom magam mindahhoz, amit előzőleg állítottam, de ha nagyon nem tudsz egzakt válasz nélkül élni, kénytelen leszel "megcsinálni a házidat" és ALAPOS kutatást végezni ezügyben, including, but not limited to:

- Assembly

- Compiler theory

- C/C++ internals

- Memory management

- System calls


Ha erre esetleg nem volna 1-2 felesleges éved, akkor inkább elégedj meg azzal, hogy bár elvileg gyorsabb is lehetne egy C-s kód egy tisztességes OO C++-osnál, a valóságban, ha egyáltalán így is van, annyira nem jön ki a különbség, hogy érdemes legyen ezzel foglalkozni; vannak sokkal lényegesebb dolgok ennél.

2015. júl. 24. 23:26
Hasznos számodra ez a válasz?
 14/15 A kérdező kommentje:

És mi értelme van C -ben programozni ha C++ -ban ugyan azt megírhatod és lefordul, de használhatod a C++ előnyeit ahol jól jön?


Gyorsabb meg úgy is az lesz amelyikre jobb kódot generál a fordító.

2015. júl. 25. 15:27
 15/15 anonim ***** válasza:
A kérdés a gyorsaságról szólt. Amúgy a C-nek elég jó kompatibilitási támogatottsága van más nyelvekhez. A C++-nak kevésbé van.
2015. júl. 25. 17:33
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!