Witaj w 67. odcinku podcastu zajmujemy się tematem optymalizacji. Omawiamy kiedy powinniśmy a kiedy nie powinniśmy tego robić. Z naszym gościem i jego suwaczkiem przejdziemy przez różne poziomy i aspekty związane z wydajnością i zobaczymy jak wygląda świat wydajnościowych maniaków na różnych poziomach.
Niech ten konkurs wpędzi Was w "ostrą jazdę bez trzymanki". Kto będzie pierwszy? Na kogo spadnie szacunek .Net'owej społeczności? Do zwycięzcy wyślę ładnie zapakowane 0.7 Jack’a Daniels’a i dziesięć setek Wiśniówki Lubelskiej. Tematem konkursu jest zoptymalizowanie procesu zamiany ciągu bajtów na obiekty. Wersja uznana jest za najszybszą jeśli od poprzedniej najszybszej wersji będzie szybsza o 5% w każdym z 10 powtórzeń testu. Nagroda zwycięscy zostaje przyznana wówczas gdy po pull request z najsz...
Sztuka programowania 2403 dni, 4 godziny, 2 minuty temu 145 źrodło rozwiń
Podczas pracy nad moim nowym projektem SewingMachine zacząłem zastanawiać się, czy w szczególnych wypadkach, serializacja obiektów nie mogłaby zachodzić szybciej. Zachęcam do poznania podejścia, które pozwala na 10x (słownie: dziesięć razy) szybszą serializację, zgodną z formatem protobuf-net.
Moją przygodę z Entity Framework zacząłem od przeczytania jednej z książek poświęconej właśnie temu frameworkowi. Później miałem jeszcze okazję spotkać się z nim w kilu projektach. Zawsze starałem się pisać kod zgodnie z moją najlepszą wiedzą, tak aby jakość produktu końcowego była jak najwyższa. Możecie sobie wyobrazić, jakie było moje rozczarowanie, kiedy dopiero po kilku latach dowiedziałem się o możliwości wyłączenia śledzenia. Dlaczego rozczarowanie? Dlatego, że mimo ...
Daj się poznać 2017 2761 dni, 15 godzin, 1 minutę temu 302 źrodło rozwiń
Kontynuując wątek LINQ, który podjąłem jakiś czas temu, poruszę dziś temat optymalizacji operacji jakie wykonujemy na kolekcjach. Na starcie muszę się przyznać, że tytuł nie jest do końca zgodny z prawdą, bo trzy słowa to o wiele za mało, by wejść w głębiej w temat optymalizacji zapytań. Są jednak 3 metody, które można wykorzystać do znacznego przyspieszenia wykonywania operacji w bardziej rozbudowanych łańcuchach przy minimalnym nakładzie pracy.
One of the main processes in cookit is dealing with extracting recipe information from raw html. I know it isn’t the most elegant solution but it is the only universal one. But to the point. Every web page goes through a process involving html parsing, stemming, parsing, and n-gram token matching. Then it’s saved to Sql Server and after transformation to Solr. So a lot of string manipulation, math calculations and from time to time mostly 0-gen GC. In the most pessimistic case this process has to be r...
Sztuka programowania 3097 dni, 21 godzin, 53 minuty temu 60 źrodło rozwiń
Przemysław Walkowski Większość programistów w pewnym momencie odkrywa, że ich IDE posiada skróty klawiszowe i dzięki używaniu ich może przyspieszyć swoją pracę. Inni dowiadują się, że kodowanie przy pomocy myszki jest raczej objawem braku profesjonalizmu. Poniżej lista skrótów klawiszowych, których używam codziennie w mojej pracy. Cześć skrótów jest oferowana przez ReSharpera ale w większość są to skróty, które o...
Sztuka programowania 3383 dni, 21 godzin, 35 minut temu 538 źrodło rozwiń
Przy okazji codziennej prasówki natknąłem się na ten artykuł na temat wydajności pętli for w JavaScript'cie dla różnych przeglądarek. W skrócie chodzi o to czy powinniśmy pisać pętlą for tak...
Sztuka programowania 3590 dni, 19 godzin, 37 minut temu 437 źrodło rozwiń
Nie zawsze kwerendy działające świetnie na małych zbiorach są równie dobre dla dużych tabel. Porównanie wydajności zapytań w funkcji liczebności zbioru. Przykład ze stałą złożonością obliczeniową.
Bazy danych i XML 3686 dni, 12 godzin, 40 minut temu 340 źrodło rozwiń
Wstęp do zagadnień związanych z optymalizacją i mierzeniem wydajności zapytań SQL. Jest to fragment darmowego kursu pisania zapytań SQL opisującego proces przetwarzania kwerend przez silnik bazodanowy.
Bazy danych i XML 3695 dni, 5 godzin, 54 minuty temu 475 źrodło rozwiń
W trakcie przygotowań do prezentacji poświęconej indeksom kolumnowym w SQL Server 2014 (“Clustered ColumnStore Index Deep Dive”) odkryłem kolejny scenariusz, w którym śledzenie liczby odczytów za pomocą SET STATISTICS IO ON jest złym pomysłem. Historycznie takich sytuacji było wiele, że wspomnę o przekłamaniach przy zapytaiach z użyciem funkcji skalarnych (wpis Gail Shaw) czy problemach z ilością odczytów przy planach wykorzystujących parallelism (wpis Aarona Bertranda). Co tym razem? Po kolei ...
Bazy danych i XML 3815 dni, 23 godziny, 13 minut temu 75 źrodło rozwiń
Przez ostatnią dekadę wiele osób pisało i dyskutowało o problemie dotyczącym alokacji w bazie systemowej tempdb. Dość dobre repozytorium wiedzy na temat tempdb zebrała jeszcze w 2009 roku Cindy Gross na swoim blogu. Także i polscy specjaliści poruszali ten temat wielokrotnie [...]. Z jednej strony wiadomo już, że odpowiedź na pytanie, czy dzielić bazę tempdb na wiele plików danych, brzmi “to zależy”. Z drugiej strony na ogół skupiano się na udowadnianiu, że zalecenie dotyczące podziału tempdb jest ...
Bazy danych i XML 3815 dni, 23 godziny, 13 minut temu 204 źrodło rozwiń
Jednym z tematów często pojawiających się na konferencji SQLDay 2014 (na sesjach i w kuluarach), była systemowa sesja Extended Events o nazwie systemhealth. Wspomniał o niej m.in. Bob Ward przy okazji prezentacji na temat stanów oczekiwania. Pomyślałem, że dobrze byłoby napisać parę słów o tym często niedocenianym źródle informacji dla DBA.O sesji słów kilka Gdzie można znaleźć sesję systemhealth? Oczywiście najprościej jest odszukać węzeł Management – Extended Events w ...
Bazy danych i XML 3814 dni, 21 godzin, 41 minut temu 50 źrodło rozwiń
Dzisiaj chciałbym zwrócić Waszą uwagę na pilnowanie typów danych w MS SQLu (i w innych silnikach bazodanowych pewnie też). Czasami przez nieuwagę możemy nieźle namieszać na bazie i nawet początkowo o tym nie wiedzieć.
Bazy danych i XML 3911 dni, 10 godzin, 49 minut temu 268 źrodło rozwiń
Zrównoleglenie danego algorytmu to jeszcze nie koniec wyzwań. Pytanie jakie należy postawić, to jak wiele stworzyć wątków? Musimy wziąć pod uwagę synchronizacje i problemy z tym związane. Jeśli mamy tylko 4 procesory, wtedy tworzenie więcej niż 4 wątków nie przyśpieszy obliczeń, jeśli wszystkie one zawsze będą zajęte. Tworzenie większej liczy wątków niż CPU, ma sens wyłącznie jak część z nich musi czekać na jakieś dane i tym samym, nie wykorzystują one w pełni cykli CPU. Liczba wątków, zależy od tego j...
Sztuka programowania 4000 dni, 1 godzinę, 58 minut temu 98 źrodło rozwiń
W poprzednich wpisach omawialiśmy wewnętrzną implementację async\await. Dziś kolejne przykłady pokazujące, czego należy unikać aby optymalizować nasz kod. Jak wiemy, użycie await generuje masę kodu i niesie ze sobą alokację dodatkowych obiektów – maszyna stanów, wątki, wrappery itp. W zasadzie sama alokacja w .NET nie jest jakiś wielkim problemem i jest znacząco szybsza niż w językach niezarządzanych. Niestety, pomimo wielu optymalizacji dokonywanych przez GC, późniejsze ich zwolnienie jest czasochłonn...
Sztuka programowania 4117 dni, 4 godziny, 53 minuty temu 117 źrodło rozwiń
Czasem, gdy walczymy o jak najszybszy czas odpowiedzi naszej strony musimy optymalizować jej dość dziwne elementy. W najnowszym magazynie .Net Curry autor, Omar AL Zabir w artykule zatytułowanym "Essential it admin skills for .net developers" w jednym z punktów pokazuje jak pozbyć się dodatkowych nagłówków wysyłanych przez IIS a dodawanych czy to przez niego samego czy też ASP.NET. Idea szczytna - każdy dodatkowy bajt kosztuje nas jakiś tam ułamek czasu zarówno po stronie serwera jak i przegląd...
Kolejna cześć artykułu o wydajności w C#. Zapraszam do lektury!
Sztuka programowania 4295 dni, 2 godziny, 4 minuty temu 203 źrodło rozwiń
Rozpocząłem pisanie nowego cyklu artykułów, tym razem o wydajności w C#. Pierwsza część właśnie została opublikowana i zawiera przede wszystkim wprowadzenie do tematu oraz kilka konkretnych przykładów. Kolejne części już wkrótce i będą prezentowały poszczególne konstrukcje w C#. Na blogu już pisałem niejednokrotnie o wydajności w C#, ale artykuł oprócz tego co już tutaj zostało napisane, zawiera dodatkowe informacje i przykłady. Dla tych co nie czytali blog’a myślę, że taki cykl stanowi po prostu kompend...
Sztuka programowania 4304 dni, 16 godzin, 17 minut temu 335 źrodło rozwiń
autor: Jednym z największych braków w licznikach wydajności jest brak informacji na temat aktualnego zużycia pamięci. Jednym z wymagań certyfikacyjnych aplikacji dla Windows Phone 7 jest limit 90 MB zużycia pamięci przez aplikację w przypadku telefonów z pamięcią mniejszą niż 256 MB. Na chwilę obecną nie ma na rynku telefonów spełniających ten warunek. Teoretycznie nie powinniśmy się tym przejmować. Natomiast zgodnie z informacjami jakie podał Microsoft następna gene...
Mobile development 4627 dni, 4 godziny, 45 minut temu 45 źrodło rozwiń