O szukaniu performance'u. Pół żartem, pół serio. Ciało jest. Nawet dycha, ale sprawcy brak. Kto jest winny?
Sztuka programowania 1381 dni, 2 godziny, 23 minuty temu 76 źrodło rozwiń
Programista 10x to osoba, której wydajność jest dziesięciokrotnie większa od przeciętnego inżyniera oprogramowania. Niektórzy nie wierzą, że jest to możliwe, inni twierdzą, że sami są programistami 10, a nawet 100x. Czy programista 10x istnieje? Jak zostać programistą 10x?
Sztuka programowania 1915 dni, 3 godziny, 15 minut temu 213 źrodło rozwiń
Godzina 7:30 melduję się rano w pracy. Coś na ząb, zielona herbata i zaczyna się… Właśnie startuje najważniejsze kilka godzin tego dnia w pracy. Okienko, w którym mój mózg jest wypoczęty. Już bardziej wypoczęty dzisiaj nie będzie 🙂 Możemy zatem razem, ja i mój mózg, skupić się na zadaniach złożonych, wymagających świeżeści i polotu. Zawsze w tym momencie powtarzam sobie.. Maciek nie spie#$@ tego dzisiaj. Powtarzam to sobie i zaczynam od najtrudniejszego zadania tego dnia.
Test jednostkowy powinien trwać milisekundy, a tu mija pierwsza, piąta, dziesiąta sekunda, coś jest nie tak. Zaglądamy do kodu czyżby nasz test jednostkowy był uzależniony od kosztownej zewnętrznej zależności. Pudło, wszystkie rzeczywiste zależności na potrzeby testów jednostkowych zastały zastąpione przez atrapę (mock). W ramac...
Sztuka programowania 2293 dni, 3 godziny, 25 minut temu 63 źrodło rozwiń
W wpisie o lokalizowaniu enumów pojawił się komentarz, w którym Janko zwrócił mi uwagę, że rozbijanie napisów na małe pliki resource nie jest najlepszym pomysłem pod względem wydajności. Jak pisałem w innym wpisie (Używanie napisów w aplikacji) stosuje wiele plików resource do organizacji napisów wyświetlanych użytkownikowi. Dlatego chciałem sprawdzić, czy to prawda. Przeglądając internet można trafić na pytania na stackoverflow: https://stackoverflow.com/ques...
Wielokrotnie zastanawiam się, czy mój kod jest wydajny. Czy nie da się czegoś zrobić, aby aplikacja działała szybciej. Przy szybkości działania nie można założyć, że coś wydajne, bez zmierzenia tego. Jak zobaczysz pod koniec wpisu, może się okazać, że operacja, która wydaje się szybka, wcale taka nie jest. Jak zmierzyć wydajność kodu .NET? Możemy zrobić to na wiele sposobów. Niektórzy używają DateTime.Now, inni DateTime.UtcNow, czy też klasy StopWatch. W ka...
Wydajność funkcji jest ważną miarą w każdej aplikacji. Sprawdź jak BenchmarkDotNet umożliwia w prosty sposób wykonanie testów wydajności metod poprzez dodanie kilku atrybutów.
Nocny batch. W dzisiejszych reaktywnych czasach te dwa słowa wywołują grozę. Ale czy batchowanie jest naprawdę takie złe? A może instnieją sposoby na sensowne użycie tego podejścia? Zapraszam do lektury na ten temat.
Architektura 2502 dni, 3 godziny, 15 minut temu 117 źrodło rozwiń
Have you ever heard that "premature optimization is the root of all evil"? Probably yes. It's quite well known Donald Knuth's phrase. However, the whole cite is much less known...
Sztuka programowania 2755 dni, 19 godzin, 1 minutę temu 25 źrodło rozwiń
Paczka wartościowych materiałów, które możecie znaleźć w sieci. Jeżeli chcesz zapoznać się z pozostałymi ciekawymi linkami możesz zrobić to tutaj...
Written by Dawid Sibińskion If you’ve ever had any performance issues with your .NET applications, you may find this writing interesting. In this post I’d like to present to you a tool produced by JetBrains – dotTrace, showing how using only one of its functionalities can help in finding causes of performance issues in .NET applications. Performance issue on production Months ago some of your colleagues implemented an application and delivered it to the Customer. The app is “Countries and Citie...
Daj się poznać 2017 2825 dni, 13 godzin, 52 minuty temu 39 źrodło rozwiń
Dosyć często słyszy się, że programy pisane w C++ są szybsze od tych pisanych w C#. Głównym powodem takiego stanu rzeczy ma być fakt, że kod pisany w C++ jest kompilowany bezpośrednio do kodu natywnego, natomiast w przypadku C# programy działają na platformie .NET. Co za tym idzie, pisząc aplikację w C++ musimy sami zadbać o rzeczy takie jak na przykład zarządzanie pamięcią. Środowisko .NET robi tego typu rzeczy za nas (Garbage Collector). Niewątpliwie oszczędza to masę czasu p...
Daj się poznać 2017 2828 dni, 2 godziny, 54 minuty temu 396 źrodło rozwiń
Reading time ~5 minutes The previous post described the methodology I’ve used to calculate similarities between recipes in cookit. If You haven’t read it I’ll give it 4 minutes because it will make understanding this post easier. Go one, I’ll wait. It ended on a happy note and everything seemed to be downhill from there on. It was until I tried to run it. It took long. Very long. How long? I don’t know because I’ve canceled it after about one hour. Going with a famous quote (probably from E...
Sztuka programowania 2915 dni, 2 godziny, 49 minut temu 141 źrodło rozwiń
Reading time ~4 minutes Diagnosing high memory usage can be tricky, here is the second part of how I found what was hogging to much memory in our system. In the previous post I’ve wrote how to create a memory dump and how many possibilities of catching just the right moment for it ProcDump has. When trying to analyze memory leaks, or high memory usage (not necessary meaning a leak) we have a few ways to approach it: Attach a debugger There are many problems with this approach, to name a fe...
Dzisiaj chciałbym pokazać BenchmarkDotNet. Dzięki niemu w łatwy sposób można przetestować wydajność konkretnych metod w c#. Na blogu temat wydajności poruszałem już wiele razy i wiemy, nie jest łatwe prawidłowe zmierzenie czasu wykonania kodu. Pamiętajmy, że kod wykonany pierwszy raz zawsze musi zostać przetłumaczony do kodu maszynowego (JIT). W momencie wywołania pierwszy raz jakiejkolwiek metody, CLR sprawdzi czy dana metoda ma już kod maszynowy. Jeśli jakaś me...
Sztuka programowania 3175 dni, 3 godziny, 56 minut temu 102 źrodło rozwiń
Ten post nie jest śmiertelnie poważny ani merytoryczny. Jednak nosi znamiona użyteczności i bycia ciekawostką zarazem. Otóż istnieje taki dodatek do Firefoxa o nazwie Tilt, który za pomocą WebGL rysuje strukturę dowolnej strony WWW. I coś ciekawego dzięki temu możemy poobserwować.
JMeter jest darmową aplikacją bardzo przydatną podczas wykonywania “load testing”. Interfejs użytkownika co prawda jest bardzo mało intuicyjny, ale po pewnym czasie można przyzwyczaić się. Aplikacja, po uruchomieniu prezentuje się następująco (...) Oczywiście na oficjalnej stronie można znaleźć pełną dokumentację, więc moim celem nie jest opisywanie każdego elementu. Jako próbkę, po prostu spróbujmy stworzyć test, który będzie łączył się z jakąś stroną (np. Google) i...
Napisz odpowiedź Serializacja jest procesem przekształcania obiektów, do postaci tekstowej lub binarnej. .NET framework zapewnia nam kilka klas, takich jak XMLSerializer, DataContractJsonSerializer czy BinaryFormatter, które umożliwiają serializację danych do różnych formatów. Ponadto, do dyspozycji mamy wiele bibliotek firm trzecich, przez co wybór najlepszej metody staje się o wiele trudniejszy. Generalnie, każde narzędzie, czy format posiada swoje wady i zalety, dlatego też wybierając rozwiązania do ...
Sztuka programowania 3560 dni, 2 godziny, 26 minut temu 436 źrodło rozwiń
Kiedyś na blogu wyjaśniłem jak działa readonly, gdy jest wywoływany po za konstruktorem. Posłużyłem się następującym przykładem.
O korzyściach z modyfikatora sealed, od strony projektowej pisałem już tutaj. Dzisiaj postanowiłem jednak napisać prosty program, który pokaże nam czy faktycznie są jakieś różnice wydajnościowe. Oczywiście jest to raczej ciekawostka dla ludzi zajmujących się c# internals. Jeśli zależy nam na optymalizacji, zawsze zaczynajmy od ulepszenia samego algorytmu (zmniejszenia jego złożoności), a w ostateczności sięgajmy po mikro-optymalizacje. Warto stosować wspominane wskazówki, ale ze względu na dobre praktyk...
Sztuka programowania 3617 dni, 18 godzin, 20 minut temu 243 źrodło rozwiń