Rychlost – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Rychlost – C / C++ – Fórum – Programujte.comRychlost – C / C++ – Fórum – Programujte.com

 

Luckin
~ Anonymní uživatel
57 příspěvků
12. 12. 2012   #1
-
0
-

Zdravím, mám čistě technickou otázku. Čím to je že stejný algoritmus mi při zkompilování v různých prostředích běží různě rychle? Zkoušel jsem to na quick sortu pole o 10 milionech prvků. Dev-Cpp - 3 vteřiny, Code::Blocks - 6 vteřin, VS2010 - 9 vteřin (cca stejně jako Java v NetBeans). Optimalizaci mám u všech nastavenou na maximální rychlost. U VS ta optimalizace nebyla znát vůbec, u Code::Blocks trochu a u Dev-Cpp hrozně moc (před ní cca 12 vteřin). Jenom mě zajímá jestli je to kompilátorem a nebo jestli je ještě něco co se u VS a Code::Blocks dá nastavit aby se rychlost zvedla. Ne že bych to potřeboval ale zajímá mě to.

Nahlásit jako SPAM
IP: 89.103.156.–
yaqwsx+9
Posthunter
12. 12. 2012   #2
-
0
-

A porovnáváš debug nebo release build? Na debug build se neprovádí všechny optimalizace a je plný debugovacích informací, proto je pomalejší.

Nahlásit jako SPAM
IP: 85.160.43.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Luckin
~ Anonymní uživatel
57 příspěvků
12. 12. 2012   #3
-
0
-

#2 yaqwsx
Oboje, rychlost byla u debug i release vždy stejná.

Nahlásit jako SPAM
IP: 89.103.156.–
Tom
~ Anonymní uživatel
434 příspěvků
12. 12. 2012   #4
-
0
-

Mne jen napada, ze treba VS dava do funkci check na tzv security cookie (pokud to neni vypnuto), cimz se kontroluje preteceni stacku (takze bezpecnostni featura). Takze pokud bys volal neco rekurzivne hodne mockrat nebo jinak volal hodne funkci, tak by to mohlo delat nejaky rozdil.....teda za predpokladu, ze treba Code::Blocks nema neco podobneho (ale mam pocit, ze to je ciste MS vymysl).

Co to je za kod? Pripadne by se dal porovnat ASM....

Nahlásit jako SPAM
IP: 89.102.30.–
Luckin
~ Anonymní uživatel
57 příspěvků
12. 12. 2012   #5
-
0
-

#4 Tom
Výsledný kód vypadá takhle:

#include <iostream>
#include "C++ Basics/Basics.hpp"
using namespace std;
using namespace Basics;

int main()
{
  Array<double> arr(10000000);
  
  for(int i=0;&arr[i];i++)
    arr[i] = rand() % 100;
  
  arr.sort();
    
  cout<<"...";
  getchar();
}

A potřebuješ ve stejné složce mít tohle:

http://leteckaposta.cz/434137979

Je to jakási moje vlastní knihovna.

Nahlásit jako SPAM
IP: 89.103.156.–
vitamin+8
Grafoman
12. 12. 2012   #6
-
0
-

Preco nepouzies std::array, std::vector a std::list? Tie tvoje kontainery neponukaju ziadnu specificku funkcionalitu kvoly ktorej by si ich musel programovat odznova. Navyse su nekompatibilne s funkciamy a kontainerami so stl.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Luckin
~ Anonymní uživatel
57 příspěvků
12. 12. 2012   #7
-
0
-

#6 vitamin
Jsou kompatibilní s Céčkovými knihovnami které dost používám. Psal jsem to hlavně proto abych se na tom pořádně naučil jak fungujou třídy, šablony a přetěžování operátorů, pak jsem do toho tak nějak pořád přidával věci a když to funguje tak proč to nepoužívat. STL nepoužívam, zatim jsem jí nikdy nepotřeboval a třeba standardní třída string se mi moc nelíbí, kvuli tomu jsem s tím částečně začal, chtěl jsem si napsat vlastní třídu pro práci s řetězci, takovou která bude umět třeba i zpracovat wxString z wxWidgets, abych si nemusel pamatovat její metody (pro wx mám jinou verzi). Všechny ty 4 třídy jsou kompatibilní mezi sebou a fungujou tak jak mě to vyhovuje. Až na List která je při velkém počtu prvků poněkud pomalá, ale tak dlouhej List jsem snad nikdy nepoužil.

Nahlásit jako SPAM
IP: 89.103.156.–
KIIV
~ Moderátor
+43
God of flame
12. 12. 2012   #8
-
0
-

u toho kodu bych spis cekal, ze bude zdrzovat to cekani na stisk enter... :D

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
12. 12. 2012   #9
-
0
-
Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
vitamin+8
Grafoman
12. 12. 2012   #10
-
0
-

#9 KIIV


A hlavne ak da na forum kod ktory pouziva stl tak nemusi pribalovat ziadne specialne kniznice ktore nikto iny nepozna :)

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Luckin
~ Anonymní uživatel
57 příspěvků
12. 12. 2012   #11
-
0
-

#10 vitamin


#9 KIIV
Tam o ten kód ani tak moc nejde, ten rozdíl v rychlosti platí všeobecně, já sem to jenom testoval konkrétně na quick sortu, ale stejný výsledek bude třeba u nějaké dlouhé smyčky která ani nic nedělá. Nebo třeba jenom deklaruje proměnnou, kdyby nic nedělala tak je dost možné že jí kompilátor přeskočí.

Nahlásit jako SPAM
IP: 89.103.156.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 66 hostů

Podobná vlákna

Rychlost — založil Zelenáč

Rychlost funkce — založil peter

Rychlost Timeru — založil Martin Morawiec

Rýchlosť tlače — založil echo112

Rychlost Windows XP — založil Siemens

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý