Aktywne Wpisy

aegypius +625
Czy ten naród już totalnie zdziczał i pozbył się jakichkolwiek przejawów człowieczeństwa i rozumu?
Pamiętam 1997 i powódź (jako obserwator, nie uczestnik):
- ludzie brali sprawy w swoje ręce, bo rząd był jak dziecko we mgle
- wędkarze przyjeźdżali ze swoimi łódkami
- właściciele składów budowlanych dawali piasek
Pamiętam 1997 i powódź (jako obserwator, nie uczestnik):
- ludzie brali sprawy w swoje ręce, bo rząd był jak dziecko we mgle
- wędkarze przyjeźdżali ze swoimi łódkami
- właściciele składów budowlanych dawali piasek

koronawirus +233
Tak wygląda u mnie jedna z dróg do lokalnej wioski. Ludzie nie mogą dojechać do domów. Przy granicy z Czechami dzieje się prawdziwa tragedia ( ͡° ʖ̯ ͡°)
#powodz
#powodz
źródło: 2207ad5a-0fa5-4e13-9f03-745f8b849d07
Pobierz




https://extensa.tech/blog/multi-versioning-problem/
Tak, wciąż jest assembler...
W kolejnym wpisie będzie o tym kiedy multi-versioning nie jest idealny.
#cpp #cplusplus #programowanie #extensa #blog
popcnt,int popcnt(int x) { int r=0; while (x) { x = x & (x-1); r++; } return r; }(jezeli nie zrobilem gdzies bledu)popcnt(jezeli taka instrukcje dana architektura posiada)Tak, to prawda. Z drugiej strony w publikacji która linkuje autorzy udowadniają ze implementacja oparta o AVX2 ale bez użycia instrukcji popcnt może być szybsza niż sprzętowy popcnt.
Przeglądając glibc można podejrzeć sobie implementację na piechotę w C dla niektórych funkcji z stdlib. Przykładowo, dobrze znany memset() zaimplementowany jest kilka sposobów. Kod wybierający właściwą wersję jest tutaj: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/multiarch/ifunc-memset.h;h=0c25eae4a48d5c9400a7fbd3d738448fe28f9603;hb=HEAD a poszczególne implementacje tutaj: https://sourceware.org/git/?p=glibc.git;a=tree;f=sysdeps/x86_64/multiarch;hb=HEAD pliki
memset-*.S@babool:
Sprawdzę wieczorem, ale wydaje mi się że wspiera tak samo dla C jak i C++. Na innych językach się nie znam tak dobrze :p
Tak, glibc ma dispatchowanie na poszczególne architektury. Stąd jak sprawdzisz co naprawdę jest wołane zobaczysz coś w stylu: _memcpyssse3 itp.
Ale sam fakt narzutu wynikającego z wołania funkcji bibliotecznej i to jeszcze warunkowo może zupełnie pogrążyć te optymalizacje.