W przypadku projektu na uniwersytecie, musieliśmy wprowadzić kilka różnych algorytmów, aby obliczyć wartości ekwiwalentne, gdy dany zestaw elementów i zbiór relacji między tymi elementami .(Dis) Udowodnienie, że jeden algorytm działa szybciej niż inny dzięki wewnętrznym językom
Zostaliśmy poinstruowani, aby wdrożyć, między innymi, algorytm wyszukiwania i optymalizacji Union-Find (Union by Depth, Size). Przez przypadek (robiąc coś, co uważałem za konieczne dla poprawności algorytmu), odkryłem inny sposób optymalizacji algorytmu.
To nie jest tak szybkie, jak w przypadku Union By Depth, ale blisko. Nie mogłem dla mnie zrozumieć, dlaczego było tak szybko, jak to było, więc skonsultowałem się z jednym z asystentów, którzy też nie mogli tego zrozumieć.
Projekt był w Java i datastructures używałem były oparte na prostych tablic liczb całkowitych (obiekt, a nie int
) Później, przy ocenie projektu, powiedziano mi, że to chyba coś wspólnego z „Java buforowanie ", ale nie mogę znaleźć niczego online na temat tego, w jaki sposób buforowanie może to zmienić.
Jaki byłby najlepszy sposób, bez obliczania złożoności algorytmu, aby udowodnić lub obalić, że moja optymalizacja jest tak szybka z powodu sposobu robienia rzeczy przez Javę? Wdrożenie go w innym, (niższym poziomie?) Języku? Ale kto mówi, że język nie zrobi tego samego?
Mam nadzieję, że wyraziłem się jasno,
dzięki
Brzmi jak roczny projekt badawczy dla mnie, aby zacząć rozumieć JIT i GC oraz architekturę sprzętu komputerowego i ... –