Optimalizacia programu (zrychlenie, mensie naroky na procesor) – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Optimalizacia programu (zrychlenie, mensie naroky na procesor) – .NET – Fórum – Programujte.comOptimalizacia programu (zrychlenie, mensie naroky na procesor) – .NET – Fórum – Programujte.com

 

Tayson0
Stálý člen
1. 8. 2013   #1
-
0
-

Chcel by som sa opytat na nejake rady ohladom optimalizacie programu alebo teda programov. Ide konkretne o to aby co najmenej zatazovali procesor. Su nejake typi alebo rady ako to docielit? Myslim tym napr. nejake definovanie premennych ale zjednodusovanie cyklov a tak. Dakujem za odpovede

Nahlásit jako SPAM
IP: 85.237.239.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
1. 8. 2013   #2
-
+1
-
Zajímavé

Zapomeň na vnořování. Rozděl aplikaci do více vláken. Omez cykly a větvení. (třeba místo větvení používej mapy. (slovníky)) Zjisti si náročnost použitého řešení v každém bodě - a nahraď jej obsáhlejším, leč méně náročnějším kódem. Obecně platí, co si uděláš sám, bude lepší, než obecný návrh Frameworku. Jenže to je to - v C# musíš dodržovat především OOP. Takže ono se moc náročnosti procesoru zbavit nedá - spíše se dá snížit využití CPU...  C# jede na automatické správě paměti, OOP atd. V C# jde tedy o něco jiného, než o rychlost programu atd. Proto bude nejlepší si zvolit jiný jazyk... .NET se zaměřuje vyloženě na OOP - jde tedy o snížení velikosti programů, snížení zatížení CPU atd. Ale ten kterýžto všechno spojuje dohromady - interpret - musí nějak žít... Vlastně ještě by šlo psát aplikace přímo v CIL - tím by jsi program taktéž optimalizoval... A samozřejmě vydávej release verze...

Nahlásit jako SPAM
IP: 78.136.150.–
peter
~ Anonymní uživatel
3981 příspěvků
1. 8. 2013   #3
-
0
-

typi? type, typ, druh ; tips, tooltips, tip do loterie, tip jako nahrh, napad

Do asp nedelam, ale je to podobne php.

V php je dobre oddelit vypis od zpracovani. Cili si nejdriv zpracuji data z databaze, programu a ulozim do promennych. Udelam funkce, tere mi ulozi do promenne html kod a az pak teprve generuji stranku a vypisuji do ni obsah promenny. Znacne se tim zprehledni kod a i zpracovani je rychlejsi, protoze je obvykle nastavene php tak, aby na prikaz echo okamzite data odesilal a takovych 1000 radku tabulky se po jednom odesilanem radku zobrazovalo strasne dlouho.

Obecne u jazyku byva problem s pocitanim. Pokud to jde, provedet co nejmene vypoctu v realnem case a co nejmene slozite. Treba u pascalu a js pocitani v realnem case s pomoci Math.sin je o dost narocnejsi nez mit ulozenou tabulku s predgenerovanymi vysledky. Priklad, treba padani vlocek, pocitani sinusove drahy.

Mozna by bylo dobre uvest priklad nektereho tveho kodu, jakym zpusobem co resis.

Nahlásit jako SPAM
IP: 193.84.207.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
1. 8. 2013   #4
-
+1
-
Zajímavé

#3 peter
Kde tu vidíš ASP(.NET)? Napsal jsi hned několik úplných kravin. Kde vidíš databáze? Především - přehlednost kódu - vzhled - odporuje rychlému kódu. Čím větší prasárny budeš dělat, tím lepšího výkonu dosáhneš. Jenže to neplatí pro virtuální stroje - tam je nedodržení OOP jen na škodu. Virtuální stroj, navíc řešený jako v .NET, si nepotrpí na rychlost programu, využití CPU/procesoru - o tu mu nejde. Zmíněné prasení myslím tedy ve volnějších jazycích (C/C++/...), kde se prasekódem optimalizovat dá. Tedy abych to ještě lépe upravil - čím vyšší jazyk, tím více dbá na zjednodušení syntaxe a tím více prase konstrukcí se skrývá pod hezkými slovy. Například v .NET vytahování položek z polí. I jen CIL mi stačil - natož ASM. Čím vyšší jazyk, tím se posouvá jeho cíl. Cílem dnešní doby jsou jazyky obsahující samá pěkná slova, která udělají co nejvíce věcí za programátora. A cílem je tedy optimalizace kódu, chyb,... Čím nižší jazyk použiješ, tím bude zdrojový kód obsáhlejší, ale vše ostatní mnohem nižší. (A program nebezpečnější.) Jak fyzická velikost, tak rychlost,... Nejrychleji a nejnenáročněji pojede program v ASM, ale v kódu se nevyzná skorem nikdo... Proto jak jsem psal - zásadou lepších kvalit programu je nižší jazyk a prasekód, ve kterém se horko těžko dá vyznat. Jako třeba v C/C++ šablony, pointery, předdefinice atd... Jak jsem ale psal - cenou za prasekód je bezpečnost. Respektive nebezpečnost - více chyb, více špatných návrhů,... Kdo se v tom ale dokáže vyznat, udělá téměř shodně bezpečný program jako v .NET a nároky budou nízké...

Nahlásit jako SPAM
IP: 78.136.150.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
1. 8. 2013   #5
-
0
-

Ještě bych přidal ukázku kam to spěje - SQL... Tedy dotazovací jazyky obecně, které se snaží vetřít i do běžného programování. (mimo databáze/...) Tedy programy napsané bez cyklů, bez přílišného větvení,... Jenže pod těmi 3-XY slovy pro vytažení určitého množství dat ze zdroje pomocí dotazového splácance se neprovede nic pěkného a krátkého. Ovšem sem to směřuje. Co jsem slyšel, tak se má začít nadužívat rekurze atp. Já osobně nesnáším neznalost PC moderních programátorů a to, že se k tomu dostane každý... Začínal jsem v .NET, ale raději budu dělat aplikaci předlouho v nižším jazyku, zato však nebudu plácat zdroji... Ovšem, že chápu, že si dotazovací jazyky může dnešní PC dovolit 6x - ale stejně se mi příčí nevědět, co se pod těmi klíčovými slovy skrývá a nazývat výsledný program bezcyklickým.... Že bude kód bezpečnější? Tedy, že lidi nebudou dělat chyby atd.? Na to, jak to dopadá, se lze snadno podívat skrz deklarativní jazyky. Ti, co je znají, snad chápou, že imperativní přístup je rozhodně lepší... Což je tedy první věc - i když necháme dělat lidi chyby, pořád bude jejich řešení doplněné o mozek - řešení udělané PC bude mít chyby akorát dobře skryté... Tedy nehodlám uznávat řešení PC, dokud nebude pokořen Argument čínského pokoje... Tedy, až mi PC bude myslet, ať si za mě programuje - ale jinak chci mít možnost si řešení programu napsat sám...

Nahlásit jako SPAM
IP: 78.136.150.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
1. 8. 2013   #6
-
0
-

#3 peter

A k tvé narážce na výpočty - to jsi napsal blbost blbostí... V prvé řadě je dobré naučit se používat logické a binární operace. V C# to znamená leda tak bitové posuny/součty/násobení. Dále pak lze využít pointery - v unsafe bloku. Dále je výhodné místo mnohých větvení naučit se myslet algoritmicky. Tedy aby řešení řešilo problém dvou výsledných kořenů... Tím mám na mysli spíše manipulovat s cílem, než jich dělat více... Každopádně složitých výpočtů se není proč bát - od toho tu máme cache atp. Násobení je z 90% bráno z výsledků minulého násobení, které tam zanechal jiný program... Čemu je dobré se vyvarovat, jsou počty vyšší, než násobení/dělení... Modulo, sqrt,... Každopádně důvod, proč je co jsi psal nesmyslné se dělí na 2 části - jak jsem psal - program nedělá neustálé výpočty - spíše využívá již vypočítaného a za další - vše je nakonec převedeno do ASM - a ASM je jen o počtech a adresaci...

Nahlásit jako SPAM
IP: 78.136.150.–
KIIV
~ Moderátor
+43
God of flame
1. 8. 2013   #7
-
+1
-
Zajímavé

optimalizace se dela obvykle tak, ze se napise program a pak se projede nejakym profilerem kde se to nejvic zdrzuje... pak se vymysli co s tim...

samozrejme to chce trosku premejslet nad tim co se dela... kdy se to dela, jak casto a tak...

nicmene v jazycich jako C# a java se clovek muze dostat jen na urcitou uroven... 

v C++ se da uz jet i na urovni cache prediction a tak.. (ze se projizdi bloky pameti pekne poporade.. jak se zacne skakat tak je to pomaly)

urcite nikdy nedelat   neco++  (zase kopie objektu protoze se pak potrebuje puvodni) lepsi je ++neco  ...

--- no vznikl by z toho zatracene dlouhej seznam..

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 13 hostů

Podobná vlákna

Mafia a nároky — založil aw

Optimalizacia pre IE 5.5 — založil greppi

Optimalizacia MySQL — založil Flowy

 

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