Proč porovnávání elementu z arraye trvá tak dlouho? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Proč porovnávání elementu z arraye trvá tak dlouho? – C / C++ – Fórum – Programujte.comProč porovnávání elementu z arraye trvá tak dlouho? – C / C++ – Fórum – Programujte.com

 

Dave_F
~ Anonymní uživatel
2 příspěvky
24. 1. 2021   #1
-
0
-

Dobrý den,

v poslední době dělám ve volném čase raycaster, něco na styl renderovacího enginu wolfensteina 3d.

V C++ teprve začínám a tak je možné že mi tu uniká nějaká úplně jednoduchá věc.

Herní mapa je uložena do 2 rozměrného arraye int Map[20][20], potom jsou nějaké výpočty paprsků atd. Ovšem důležitá je část, kdy porovnávám, jestli se na nějakém místě v mapě nachází nebo nenachází zeď.

Program jede asi na 85 FPS, což je na něco tak jednoduchého příliš málo. Když jsem spustil profiler, zjistil jsem, že nejvíce program zpomaluje tato část kódu:

if (Map[CheckY][CheckX] != 0)
{
break;
}

Tenhle kód vlastně jen ukončí porovnávací cyklus, protože je porovnávané místo různé od nuly, takže paprsek trefil zeď. Jenom nechápu, proč právě tato část programu běží tak pomalu. Je sice pravda, že tento proces kontroly místa v mapě běží vícekrát něž je nutno, protože jsem ho ještě plně nedodělal, ovšem není to jediná věc která běží vícekrát než je nutno. A přesto jen ona dělá takové potíže.

Nevíte tedy někdo co bych měl dělat? 

Nahlásit jako SPAM
IP: 62.245.112.–
gna
~ Anonymní uživatel
1891 příspěvků
24. 1. 2021   #2
-
0
-

Načtení intu z paměti, i kdyby nebyl v cache, a otestování jeho hodnoty je záležitost nanosekund. Pokud ti tam program tráví hodně času, tak prostě proto, že to tak máš naprogramované.

Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1891 příspěvků
24. 1. 2021   #3
-
0
-

Ještě mě napadlo, že pokud děláš debug build s kontrolou mezí polí, tak tím by se to dost zpomalilo. Ale pořád asi ne tolik, aby toto samo o sobě bylo úzké hrdlo programu.

Nahlásit jako SPAM
IP: 213.211.51.–
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, 114 hostů

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ý