Aktywne Wpisy

etherway +156
Mireczki pijcie ze mno kompot, przeskoczyłem dziś o 2,5 generacji (。◕‿‿◕。)
#motoryzacja #ford #focus #pokazauto #carboners
#motoryzacja #ford #focus #pokazauto #carboners
źródło: 7c1587927eb7eafbffe0fff67ef6901e5f724910b45fdbbf908973b4bc147b93
Pobierz
ursusowy 0
#famemmarestream
Dajcie jakiegoś linka do restream
Dajcie jakiegoś linka do restream





porobiłem pare testów i wyszło że te dwuwymiarowe są ok. 4x lub wiecej szybsze niż 1 wymiarowe, przynamjniej kompilujac na Intelu visual studio x86, chce jeszcze sprawić na docelowej architekturze 68k.. może to wybika z tego że żeby móc traktoac 1 wymiarowa tablicę jako macierz trzeba jednac sobie obliczyć index = x + y * width - co jest dodatkową operacją.. w każdym razie w tym przypadku przyrost wydajności bardzo duży..
- intel i7
- kompilator Visual Studio 2019, jezyk C (nie cpp), komilacja release x86
- tablice dynamiczne
- zarówno na debug i release tablice **
źródło: comment_16146277216ZksNtqTCccqnCBWf9YtQP.jpg
Pobierzfor (int i = 0; i < RC_render_width_i; ++i){
tab_2d_1[i] = (my_struct*)malloc(RC_render_width_i * sizeof(my_struct));
}
wymiary ci się pomieszały
std::chrono::high_resolution_clock. Anewsię w modern cpp nie używa xDtab_2d_1 = (my_struct**)malloc(RC_render_width_i * sizeof(my_struct*));- zabrakło ci * w sizeofclock()? Poprawiłem twój kod ( https://paste.ofcode.org/t6g2zNG22RH36Cb8Z4tXcu ), i dodałem by też wypisał jaka to jest ta wartośćtime2-time1. Taki mam wynik:test 1: 0.002000 2test 2: 0.002000 2
Tak.. różnica w wartości
clock()to 2. Trochę nie za dokładny ten test :)test 1: 0.701000 701test 2: 0.207000 207
No i już widzę czemu: przechodzisz tablicę w najgorszy możliwy sposób. Nie po kolei, ale w każdej pętli skaczesz do kolejnego wiersza w tabeli. Zamieniłem w test1 fory miejscami (najpierw po ry, potem po rx: https://paste.ofcode.org/dmFcZCeWMgE4ZT6qPCMrTW ) i mam taki
źródło: comment_1614630008ibyKW81mwcPQ41Xjh2vKTh.jpg
Pobierz[ry][rx]a w test2[rx][ry], potem przechodziłeś w sposób optymalny dla[rx][ry]i maksymalnie zły dla[ry][rx]. Stąd miałeś różnice w wynikach x4, tyle że to nie testowanie 1d vs 2d tylko "zgodnie z cache" vs "na złość cache".W tym moim 134 vs 207 masz prawdziwą różnicę w wydajności 1d vs 2d na korzyść 1d.
int tab1_index = rx + ry * RC_render_width_i;Każdy kolejny
ryjest od siebie oddalony odRC_render_width_i. Natomiast w drugiej tablicy masz[rx][ry]- każdy kolejnyryjest obok siebie.Jak przechodzisz tablicę po kolei po
ry, to w teście 1 skaczesz coRC_render_width_i(źle dla cache) a w teście 2 o