Aktywne Wpisy
zmarnowany_czas +139
Jeszcze 5 lat temu regularnie rodziło się u nas po ponad 30 tys. dzieci miesięcznie.
Ostatni raz 30 tys. urodzin w jednym miesiącu mieliśmy na początku 2021.
W połowie 2022 spadliśmy już poniżej 25 tys. urodzeń miesięcznie
A
Ostatni raz 30 tys. urodzin w jednym miesiącu mieliśmy na początku 2021.
W połowie 2022 spadliśmy już poniżej 25 tys. urodzeń miesięcznie
A
![zmarnowany_czas - Jeszcze 5 lat temu regularnie rodziło się u nas po ponad 30 tys. dz...](https://wykop.pl/cdn/c3201142/6e6971e213e1bf570dd4c183727055d474a06b9eebf1dc91775eb6c7cacae3de,w150.png?author=zmarnowany_czas&auth=7fd76b6fed83d5a1670e2742744da7b7)
źródło: m31165535,SS
Pobierz![mickpl](https://wykop.pl/cdn/c0834752/e8a8471ee0ef9099b528719cfb0a12bfb11959242b197c0a5ccb8689ed0e1cc8,q60.jpg)
mickpl +903
Hołownia na konferencji właśnie pedzioł, że PL2050 nie poprze kredytów 0%. W żadnej formie.
#nieruchomosci #polityka
#nieruchomosci #polityka
![mickpl - Hołownia na konferencji właśnie pedzioł, że PL2050 nie poprze kredytów 0%. W...](https://wykop.pl/cdn/c3201142/6ee7d91928c5bbee3ed9d4a553cbce7724723ef6549d2f7d7cfe46e5afd3ab60,w150.jpg)
źródło: 0procent
Pobierz
Jakiś czas temu napisałem parę symulacji związanych z Ogólną Teorią Względności w #cpp, a wśród nich prostą symulację opóźnienia Shapiro. Gdy zainteresowałem się #rustlang, postanowiłem spróbować przepisać ten kod właśnie w Ruście. Spodziewałem się uzyskać ładniejszy kod o porównywalnej wydajności, jednak kiedy w końcu napisałem działającą wersję symulacji Shapiro, okazała się kilkadziesiąt razy wolniejsza od wersji w C++. Próbowałem optymalizować kod, ale ni cholery nie potrafiłem się zbliżyć do wydajności wersji C++, więc w końcu się poddałem. To było jakieś 2 lata temu.
Wczoraj, zainspirowany pojawieniem się zdjęcia czarnej dziury, postanowiłem wrócić do tematu. Zaobserwowałem jedną interesującą rzecz, która umknęła mi te 2 lata temu. Otóż symulator Shapiro, żeby uzyskać wynik, symuluje tor fotonu w pobliżu Słońca, rozwiązując pewne równanie różniczkowe krok po kroku metodą Dormanda-Prince'a. To, co zauważyłem, to że symulacja w C++ wykonuje około 2000 kroków, a w Ruście - ponad 2 miliony.
Zacząłem szukać źródła rozbieżności. Wynik symulacji był dobry w obu wersjach, więc algorytm musiał być w miarę poprawny. W końcu znalazłem powód.
Metoda Dormanda-Prince'a ma jedną fajną opcję - dość łatwo w niej oszacować błąd względem ścisłego rozwiązania i na tej podstawie dopasowywać wielkość kroku wykonywanego przez metodę. Okazało się, że w kodzie w Ruście... wpisałem o jedno 0 za dużo we fragmencie szacującym błąd ( ಠಠ) Efekt był taki, że błąd wychodził ogromny, metoda wybierała więc najmniejszy możliwy krok symulacji, żeby go minimalizować, przez co wykonywała dużo więcej kroków, niż powinna. Oto zmiana, która poprawiła błąd.
Po tej poprawce kod w Ruście wykonuje wreszcie tyle samo kroków, co kod w C++, z tymi samymi wynikami. Okazuje się jednak... 6 razy szybszy_ niż kod w C++. Prawdopodobnie duża część tej przewagi wynika z tego, że kod w Ruście próbowałem optymalizować, kiedy sądziłem, że jest wolny, a kod w C++ jest taki jak był zawsze, ale jednak wynik mnie pozytywnie zaskoczył.
Dla zainteresowanych:
- wersja w Ruście
- wersja w C++
#programowanie i trochę #fizyka #symulacje
A fajny głównie dlatego, że jak w C czy C++ masz dużą kontrolę na bardzo niskim poziomie, brak GC itp., a jednocześnie nie da się w nim
Propagation finished.
t1 = 498.6700642574116
t2 = -370.70006134326985
dt = 1738.7402341164484
delay = 0.0002341164483823377
co do Rusza, to się nie wypowiadam. ale ciągle słyszę, że pisanie w Ruście to jak pisanie w nowoczesnym C++, więc może po unowocześnieniu tego C++ by się go dogoniło ;)
Idea opóźnienia Shapiro jest taka, że promień światła przelatujący w pobliżu dużej masy (np. Słońca) jest nieco opóźniony przez grawitacyjną dylatację czasu względem promienia, który leciałby przez pustą przestrzeń.
Ten symulator symuluje przebieg promienia, który leci od Ziemi do Wenus i z powrotem (tak faktycznie mierzono to opóźnienie), przelatując przy samej powierzchni Słońca. A robi to symulując dwa osobne fotony - oba startują z powierzchni Słońca, jeden jest symulowany dotąd, aż przetnie orbitę Ziemi, a drugi - aż przetnie orbitę
@MamCieNaHita: A to na pewno. Ja nigdy nie wyszedłem poza C++98 czy tam 03, więc to jest jak najbardziej stary C++. Podejrzewam, że dałoby się sporo go ulepszyć - podobnie zresztą pewnie kod w Ruście, który
t1
it2
są otrzymane z symulacji lotu fotonów w polu grawitacyjnym Słońca.Przez chwilę poczułem się jak 3 lata temu ( ͡º ͜ʖ͡º)
Jakbyś przeskanowal kod jakimś toolem do statycznej analizy to by rzucil warningi w tych miejscach i zaoszczedzil czasu na szukanie bugow.
https://www.google.com/search?q=code+quality+checker+rust
Wołam plusujących komentarz @passage o robieniu znalezisk: @inquis1t0r @aso824 @Shamson @takbardzotymczasowekonto @Phosphoester @Elmono @filip_k @Suchockey @Guru103
COEFF_ERROR_1
, a taka nazwa niewiele by pomogła w zauważeniu nadmiarowego zera...