64bit tuning .NET Performance

hlasů
10

Vím, že .NETje JITsestaven tak, aby architektuře jsou spuštěny na těsně před aplikací běží, ale dělá JIT překladač optimalizovat pro 64-bitové architektuře vůbec?

Je něco, co je třeba udělat, nebo vzít v úvahu při programování aplikace, které poběží na 64bit system? (tj Will pomocí Int64 zlepšení výkonu a bude JIT překladač automaticky vytvořit Int64 práci na 32bitových systémech?)

Položena 18/08/2008 v 11:35
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
14

64bit JIT je odlišná od té, pro 32bit, tak bych očekávat nějaké rozdíly ve výkonu - ale já bych přepnout na 64bit jen kvůli tomu, a já bych nečekal, aby získali moc rychlost (pokud existuje) v čase CPU přechodem na 64bit.

Můžete si všimnout výrazné zlepšení výkonu, pokud vaše aplikace využívá velké množství paměti a PC má dostatek paměti RAM držet krok s ním. Zjistil jsem, že 32bit .NET aplikace obvykle začínají házet z paměti výjimek, když se dostanete na zhruba 1,6 GB při použití, ale začnou mlátit disk díky klávesnici dlouho před tím - takže konec je I / O vázán.

Zjednodušeně řečeno, pokud jste překážkou je CPU pak 64bit je nepravděpodobné, že pomůže. Pokud váš překážkou je, je paměť, pak byste měli vidět velké zlepšení.

Bude pomocí Int64 zlepšení výkonu a bude JIT překladač automaticky vytvořit Int64 práci na 32bitových systémech

Int64 již pracuje na obou 32bit a 64bit systémy, ale že to bude rychlejší, běží na 64bit. Takže pokud jste většinou číslo křupavý s Int64, běží na 64bit systému by měla pomoci.

Nejdůležitější věc je změřit svůj výkon.

Odpovězeno 18/08/2008 v 12:11
zdroj uživatelem

hlasů
9

To je dobrý článek na toto téma, jeden z lidí, kteří pracovali na 64 bitovém SVT. Zjednodušeně řečeno, pokud nezbytně potřebují adresový prostor, který 64 bit může nabídnout, nebo je třeba udělat 64 bit matematiky, budete pravděpodobně ztratí výkon. Jako ukazatele jsou větší, vyrovnávací paměť je účinně snížena na polovinu, např.

Odpovězeno 16/09/2008 v 04:54
zdroj uživatelem

hlasů
6

Všiml jsem si, 64-bit, že je mnohem pomalejší.

Jak již bylo uvedeno 64-bit JIT překladač chová jinak než x86 JIT překladače. X86 kompilátor využije některých optimalizací, že x64 člověk nemusí.

Například v .NET 3.5 32bitové JIT bude inline funkce volání structs jako argumenty, ale 64-bit JIT není.

Ve výrobním kódem jsem viděl x86 staví běh až o 20% rychleji než x64 staví (s žádnými dalšími změnami)

Odpovězeno 08/01/2009 v 18:05
zdroj uživatelem

hlasů
3

Shrneme-li, použijte 64-bit, pouze pokud

  1. Budete potřebovat další paměť a není tam žádný způsob, jak kolem něj.
  2. Naprogramujete např vědecké aplikace a potřebují zvýšenou matematické přesnosti

Na každém jiném aspektu, k dnešnímu dni se 64-bit kompilátor .NET je jeden krok dolů.

Optimalizace výkonu provedené v .NET překladače jsou velký problém.

Odpovězeno 15/02/2010 v 18:11
zdroj uživatelem

hlasů
0

Výkonové překážky bude stejná bez ohledu na to, zda je architektura je 32 nebo 64-bit. Problémy s výkonem bývají výsledkem dílčích optimálních algoritmů - volba mezi různými typy 32- a 64-bitové nebude významně ovlivnit výkon.

A co je nejdůležitější, nesnažte se zvýšit výkon něco dříve, než jste ji měřit. Především byste měli vzít profilovat kód zjistit, kde se vaše výkonové překážky jsou.

Odpovězeno 18/08/2008 v 11:57
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more