Uruchomienie następującego programu Java zajmuje średnio od 0,50 sekundy do 0,55 sekundy: public static void main(String[] args) { long startTime = System.nanoTime(); int n = 0; for (int i = 0; i < 1000000000; i++) { n += 2 * (i * i); } System.out.println((double) (System.nanoTime() - startTime) / 1000000000 …
Dużo słyszałem o projekcie PyPy . Twierdzą, że jest 6,3 razy szybszy niż interpreter CPython na ich stronie . Ilekroć mówimy o dynamicznych językach, takich jak Python, szybkość jest jednym z najważniejszych problemów. Aby rozwiązać ten problem, mówią, że PyPy jest 6,3 razy szybszy. Druga kwestia to równoległość, niesławna blokada …
Testowałem trochę kodu i nie mogłem go uruchomić tak szybko, jak z java.math.BigInteger, nawet przy użyciu tego samego algorytmu. Skopiowałem więc java.math.BigIntegerźródło do własnego pakietu i wypróbowałem: //import java.math.BigInteger; public class MultiplyTest { public static void main(String[] args) { Random r = new Random(1); long tm = 0, count = …
Poniższy kod podaje inne dane wyjściowe podczas uruchamiania wydania w programie Visual Studio i uruchamiania wydania poza programem Visual Studio. Używam Visual Studio 2008 i celuję w .NET 3.5. Próbowałem także .NET 3.5 SP1. Podczas uruchamiania poza Visual Studio, JIT powinien się uruchomić. Albo (a) dzieje się coś subtelnego z …
Implementacja kanonicznej maszyny JVM firmy Sun stosuje dość wyrafinowaną optymalizację kodu bajtowego, aby uzyskać prawie natywne prędkości wykonywania po kilkukrotnym uruchomieniu kodu. Pytanie brzmi, dlaczego ten skompilowany kod nie jest zapisywany w pamięci podręcznej na dysku w celu użycia podczas kolejnych zastosowań tej samej funkcji / klasy? W obecnej formie, …
Powiedzmy, że wąskim gardłem mojego programu w Javie są naprawdę ciasne pętle do obliczania szeregu wektorowych iloczynów skalarnych. Tak, sprofilowałem, tak, to wąskie gardło, tak, to jest znaczące, tak, taki właśnie jest algorytm, tak, uruchomiłem Proguard, aby zoptymalizować kod bajtowy itp. Praca jest zasadniczo iloczynami skalarnymi. Tak jak w, mam …
Przeglądałem dokument, który mówi o technikach optymalizacji kompilatora just -in-time (JIT) dla Javy. Jednym z nich była „inwersja pętli”. A dokument mówi: Zastępujesz zwykłą whilepętlę do-whilepętlą. A do-whilepętla jest ustawiona w ramach ifklauzuli. Ta wymiana prowadzi do dwóch mniej skoków. Jak działa inwersja pętli i jak optymalizuje naszą ścieżkę kodu? …
Trochę się pogubiłem, jeśli chodzi o szczegóły działania kompilatora JIT. Wiem, że C # kompiluje się do IL. Przy pierwszym uruchomieniu jest to JIT. Czy wiąże się to z tłumaczeniem na kod natywny? Czy środowisko wykonawcze .NET (jako maszyna wirtualna?) Współdziała z kodem JIT? Wiem, że to naiwne, ale naprawdę …
Bawię się pomysłem napisania kompilatora JIT i zastanawiam się tylko, czy teoretycznie jest możliwe napisanie całości w kodzie zarządzanym. W szczególności, po wygenerowaniu asemblera w tablicy bajtów, jak wskoczyć do niej, aby rozpocząć wykonywanie?
Intro: Piszę kod o wysokiej wydajności w C #. Tak, wiem, że C ++ dałoby mi lepszą optymalizację, ale nadal wybieram C #. Nie chcę debatować nad tym wyborem. Raczej chciałbym usłyszeć od tych, którzy, tak jak ja, próbują napisać kod o wysokiej wydajności w .NET Framework. Pytania: Dlaczego operator …
Niespodziewanie następujące kody wyjściowe: / -1 Kod: public class LoopOutPut { public static void main(String[] args) { LoopOutPut loopOutPut = new LoopOutPut(); for (int i = 0; i < 30000; i++) { loopOutPut.test(); } } public void test() { int i = 8; while ((i -= 3) > 0) ; …
Rozważ następujące dwa fragmenty kodu w tablicy o długości 2: boolean isOK(int i) { for (int j = 0; j < filters.length; ++j) { if (!filters[j].isOK(i)) { return false; } } return true; } i boolean isOK(int i) { return filters[0].isOK(i) && filters[1].isOK(i); } Zakładam, że wydajność tych dwóch utworów …
Pisząc wrażliwy na wydajność kod w Javascript, który działa na dużych tablicach numerycznych (pomyśl o pakiecie algebry liniowej, działającym na liczbach całkowitych lub liczbach zmiennoprzecinkowych), zawsze chce się, aby JIT pomógł w jak największym stopniu. Z grubsza oznacza to: Zawsze chcemy, aby nasze tablice były spakowane SMI (małe liczby całkowite) …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.