Aktywne Wpisy
Jarek_P +1623
Nie kupuj kabli na aliexpress, ani na bazarze mówili. Kup w Polsce od legalnego sprzedawcy, kabel z certyfikatem, mówili.
Na zdjęciu kabel kupiony w Polsce, od dużego allegrowego sprzedawcy. Według opisu ze strony: do 16A, oczywiście trójżyłowy, wysokiej jakości i w ogóle.
Tymczasem w realu:
- brak żyły PE
- przewód z żyłami z CFe (magnes się przykleja)
- średnica żyły 0,58mm co daje pole przekroju żyły ~0,25mm2. Dla przewodu miedzianego dałoby
Na zdjęciu kabel kupiony w Polsce, od dużego allegrowego sprzedawcy. Według opisu ze strony: do 16A, oczywiście trójżyłowy, wysokiej jakości i w ogóle.
Tymczasem w realu:
- brak żyły PE
- przewód z żyłami z CFe (magnes się przykleja)
- średnica żyły 0,58mm co daje pole przekroju żyły ~0,25mm2. Dla przewodu miedzianego dałoby
Van-der-Ledre +151
No to rekonesans pracy w p0wiatowym i jego okolicach zrobiony. Jest dokładnie tak, jak się spodziewałem. Większość ofert to kołchozy pospolite. Minimalna lub max 500zł wyżej. Wymagań pełna lista, jako "benefity" czasowa wypłata, przerwy w pracy czy możliwość umowy zlecenie. I to wszystko na stanowisko magazyniera, budowlańca, sprzedawcę czy innego konsultanta, (takich 90%ofert). Wymagań pełno, od siebie? Nic. Kilka może ofert było skierowanych do typowych specjalistów lub zagranicę.
Jedna oferta mnie bardzo
Jedna oferta mnie bardzo
Normalnie sobie piszę program w C++ (avr-g++) #atmega (dokładniej #xmega) no i mam funkcję, która przyjmuje tak daną:
funkcja(int liczba)
ale, że drugi raz patrzę na kod (a coś się w tym czasie nauczyłem) to chcę pomóc kompilatorowi i piszę:
funkcja(const int &liczba)
i czaicie, że rozmiar programu się zwiększył? I to z 2862 do 2886 bajtów!!!
No i teraz czy ja czegoś nie czaję, czy to nie normalne zachowanie jednak kompilatora?
Pomyślałem, może wyjątek, poprawiłem jeszcze jedną funkcję! I co? +4bajty do kodu ( ͡° ʖ̯ ͡°)
#cplusplus #uc #mikrokontrolery dodam #linux bo to osoby które znają się na pamięci.
Dodatkowo chodzi o nawyk, nie będę używał na typach wbudowanych nie będę używał na klasach.
Komentarz usunięty przez autora
Komentarz usunięty przez autora
bool Serial::insert_int(const int i){
char buff[sizeof(int)*4]; // Works only with base 10
return this->insertStr(itoa(i, buff, 10));
}
@keton22: Ta wersja ma dokłdanie ten sam rozmiar co fn(int);
@pytonger: No właśnie a nie powinien przynajmniej w terorii.
Porobiłem kilka eksperymentów i czasem jest bardziej optymalnie czasem mniej. Jeśli chodzi o drogę w stronę optymalizacji to zyskuje 2 bajty. A w drugą stronę z reguły bierze dużo więcej.
Komentarz usunięty przez autora
Co do
to mi się wydaje, że referencja -- to jest inna nazwa na tą samą zmienną w związku z tym dlaczego miał by generować dodatkowy kod. I tak się kompilator posługuje głównie adresami.
O podam na
const&
moƶe uniemoƶliwić część optymalizacji - np. trzeba po wykonaniu funkcji ponownie załadować wartość zmiennej z pamięci, bo jakaś funkcja dalej mogła wykonaćconst_cast
i całaconst
-ność referencji psu w dupę.A czy właśnie kompilator nie powinien sprawdzić, czy jakaś funkcja nie wywołała właśnie
const_cast
. Chodź przypuszczam, że śledzenie dostępu do zmiennej przekazywanej przez referecnję jest trudne.Czyli wniosek jest taki -- referencja skraca kod jeśli kompilator może sprawdzić czy na danej zmiennej nie wykonano żadnego rzutowania.
const_cast
, kompilator musi to formalnie udowodnić. Aby to zrobić, muszą być spełnione następujące warunki:- kompilator musi widzieć kod funkcji (ew. linker jeśli mowa o LTO, ale nie wiem czy w tej fazie w ogóle takie coś się odbywa)
- drzewko wywołań musi być odpowiednio krótkie. Dopóki nie będzie dowodu na P=NP, takie drobnostki jak halting problem utrudniają sprawę. Kompilatory obecnie
Ale dzięki -- bardzo fajna strona.
const&
jak używałem ( ͡° ͜ʖ ͡°)__attribute__((optimize("O2")))