Facebook - konwersja
Pobierz fragment

Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprzętu i kompilatorów - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
11 października 2022
Format ebooka:
PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
Pobierz fragment
89,00

Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprzętu i kompilatorów - ebook

Jeszcze kilka lat temu, by zwiększyć szybkość działania programu, wystarczyło wymienić procesor. Dzisiejsze procesory nie są znacząco szybsze od poprzedników. Nowsze architektury zapewniają zaledwie niewielkie przyrosty wydajności istniejących już programów. Nie ma innego wyjścia: jeśli programista chce tworzyć efektywne oprogramowanie, musi wiedzieć, jak odpowiednio używać dostępnych zasobów obliczeniowych. Jest to trudna sztuka, wymagająca ciągłej gotowości do nauki.

To książka przeznaczona dla doświadczonych programistów, którzy chcą sprawnie tworzyć efektywny kod. Omówiono w niej, jak korzystać z zasobów procesora i pamięci, unikać zbędnych obliczeń, mierzyć wydajność kodu i prawidłowo stosować współbieżność i wielowątkowość. Zaprezentowano również zagadnienia związane z optymalizacjami przeprowadzanymi przez kompilator, a także metody efektywniejszego korzystania z właściwości języka programowania (C++). Dokładnie wyjaśniono zasady projektowania oprogramowania pod kątem wydajności i aby ułatwić przyswajanie wiedzy, zamieszczono wiele przykładów, które będą przydatne w czasie samodzielnej nauki. Dzięki dogłębnemu zrozumieniu wiedzy ujętej w książce łatwiej będzie podejmować właściwe decyzje podczas projektowania nowego systemu lub modyfikowania już istniejącej architektury.

Najciekawsze zagadnienia:

  • korzystanie ze sprzętowych zasobów obliczeniowych
  • uporządkowanie pamięci i należyte zorganizowanie danych
  • wydajność operacji a współbieżny dostęp
  • stosowanie technik programowania bez użycia blokady
  • zwiększanie efektywności optymalizacji za pomocą kompilatora
  • interfejsy API dla współbieżnych struktur danych i struktur o dużej wydajności

Dobre decyzje projektowe to klucz do wydajności kodu!

Spis treści

O autorze

O recenzencie

Przedmowa

Część I. Fundamenty wydajności

Rozdział 1. Wydajność i współbieżność - wprowadzenie

  • Dlaczego należy brać pod uwagę wydajność?
  • Dlaczego wydajność ma znaczenie?
  • Co rozumiemy przez wydajność?
    • Wydajność jako przepustowość
    • Wydajność jako pobór mocy
    • Wydajność w przypadku aplikacji czasu rzeczywistego
    • Wydajność w zależności od kontekstu
  • Ocenianie, szacowanie i przewidywanie wydajności
  • Poznawanie zagadnienia dużej wydajności
  • Podsumowanie
  • Pytania

Rozdział 2. Pomiary wydajności

  • Wymagania techniczne
  • Przykład pomiaru wydajności
  • Testy porównawcze wydajności
    • Liczniki czasu biblioteki chrono języka C++
    • Liczniki czasu o dużej dokładności
  • Profilowanie wydajności
    • Narzędzie profilujące perf
    • Szczegółowe profilowanie przy użyciu narzędzia perf
    • Narzędzie profilujące pakietu Google Performance
    • Profilowanie z wykorzystaniem grafu wywołań
    • Optymalizacja i wstawianie
    • Profilowanie w praktyce
  • Mikrotesty porównawcze
    • Podstawy mikrotestów porównawczych
    • Mikrotesty porównawcze i optymalizacje kompilatora
    • Google Benchmark
    • Mikrotesty porównawcze to kłamstwo
  • Podsumowanie
  • Pytania

Rozdział 3. Architektura procesorów, zasoby i wydajność

  • Wymagania techniczne
  • Wydajność zaczyna się od procesora
  • Badanie wydajności za pomocą mikrotestów porównawczych
    • Wizualizacja obliczeń równoległych na poziomie instrukcji
  • Zależności od danych i potokowanie
  • Potokowanie i rozgałęzienia
    • Przewidywanie rozgałęzień
    • Profilowanie pod kątem nieudanego przewidywania rozgałęzień
  • Wykonywanie spekulatywne
  • Optymalizacja złożonych warunków
  • Wykonywanie obliczeń bez rozgałęzień
    • Odwijanie pętli
    • Operacja wyboru bez użycia rozgałęzień
    • Przykłady wykonywania obliczeń bez rozgałęzień
  • Podsumowanie
  • Pytania

Rozdział 4. Architektura i wydajność pamięci

  • Wymagania techniczne
  • Wydajność zaczyna się od procesora, ale na nim się nie kończy
  • Pomiar szybkości dostępu do pamięci
    • Architektura pamięci
    • Pomiar szybkości pamięci głównej i podręcznej
  • Szybkość pamięci - wartości
    • Szybkość operacji losowego dostępu do pamięci
    • Szybkość operacji dostępu sekwencyjnego do pamięci
    • Optymalizacje wydajności pamięci na poziomie sprzętowym
  • Optymalizowanie wydajności pamięci
    • Struktury danych efektywne z perspektywy pamięci
    • Profilowanie wydajności pamięci
    • Optymalizowanie algorytmów pod kątem wydajności pamięci
  • "Duch" w komputerze
    • Czym jest Spectre?
    • Przykład użycia ataku Spectre
    • Atak Spectre w pełni akcji
  • Podsumowanie
  • Pytania

Rozdział 5. Wątki, pamięć i współbieżność

  • Wymagania techniczne
  • Wątki i współbieżność
    • Czym jest wątek?
    • Wielowątkowość symetryczna
    • Wątki i pamięć
    • Programy ograniczane przez pamięć i współbieżność
  • Koszt synchronizacji pamięci
  • Dlaczego współużytkowanie danych jest tak kosztowne?
  • Współbieżność i kolejność
    • Potrzeba zapewnienia kolejności
    • Uporządkowanie pamięci i związane z nią bariery
    • Uporządkowanie pamięci w języku C++
  • Model pamięci
  • Podsumowanie
  • Pytania

Część II. Zaawansowana współbieżność

Rozdział 6. Wydajność i współbieżność

  • Wymagania techniczne
  • Co jest niezbędne do efektywnego korzystania ze współbieżności?
  • Blokady, alternatywy i ich wydajność
    • Programy z blokadą, pozbawione blokady oraz bez oczekiwania
    • Różne blokady w przypadku odmiennych problemów
    • Jaka jest faktyczna różnica między programem z blokadą i programem pozbawionym blokady?
  • Tworzenie bloków pod kątem programowania współbieżnego
    • Podstawy współbieżnych struktur danych
    • Liczniki i akumulatory
    • Protokół publikowania
    • Inteligentne wskaźniki używane w programowaniu współbieżnym
  • Podsumowanie
  • Pytania

Rozdział 7. Struktury danych odpowiednie w przypadku współbieżności

  • Wymagania techniczne
  • Czym jest struktura danych bezpieczna wątkowo?
    • Najlepszy rodzaj bezpieczeństwa wątkowego
    • Rzeczywiste bezpieczeństwo wątkowe
  • Stos bezpieczny wątkowo
    • Projektowanie interfejsu pod kątem bezpieczeństwa wątkowego
    • Wydajność struktur danych chronionych przez muteks
    • Wymagania dotyczące wydajności w przypadku różnych zastosowań
    • Szczegółowa analiza wydajności stosu
    • Oszacowania wydajności w przypadku schematów synchronizacji
    • Stos bez blokady
  • Kolejka bezpieczna wątkowo
    • Kolejka pozbawiona blokady
    • Struktury danych spójne niesekwencyjnie
    • Zarządzanie pamięcią na potrzeby współbieżnych struktur danych
  • Lista bezpieczna wątkowo
    • Lista pozbawiona blokady
  • Podsumowanie
  • Pytania

Rozdział 8. Obsługa współbieżności w języku C++

  • Wymagania techniczne
  • Obsługa współbieżności w standardzie C++11
  • Obsługa współbieżności w standardzie C++17
  • Obsługa współbieżności w standardzie C++20
    • Podstawy dotyczące współprogramów
    • Składnia współprogramów w języku C++
    • Przykłady współprogramów
  • Podsumowanie
  • Pytania

Część III. Projektowanie i pisanie programów o dużej wydajności

Rozdział 9. Kod C++ o dużej wydajności

  • Wymagania techniczne
  • Czym jest efektywność języka programowania?
  • Zbędne kopiowanie
    • Kopiowanie i przekazywanie argumentów
    • Kopiowanie jako technika implementacji
    • Kopiowanie w celu przechowywania danych
    • Kopiowanie wartości zwracanych
    • Zastosowanie wskaźników w celu uniknięcia kopiowania
    • Metoda unikania zbędnego kopiowania
  • Nieefektywne zarządzanie pamięcią
    • Zbędne alokacje pamięci
    • Zarządzanie pamięcią w programach współbieżnych
    • Unikanie fragmentacji pamięci
  • Optymalizacja wykonywania warunkowego
  • Podsumowanie
  • Pytania

Rozdział 10. Optymalizacje kompilatora w kodzie C++

  • Wymagania techniczne
  • Kompilatory optymalizujące kod
    • Podstawy optymalizacji stosowanych przez kompilator
    • Wstawianie funkcji
    • Co tak naprawdę kompilator "wie"?
    • Przenoszenie informacji z fazy wykonywania do fazy kompilacji
  • Podsumowanie
  • Pytania

Rozdział 11. Zachowanie niezdefiniowane i wydajność

  • Wymagania techniczne
  • Czym jest zachowanie niezdefiniowane?
  • Dlaczego występuje zachowanie niezdefiniowane?
  • Zachowanie niezdefiniowane i optymalizacja kodu C++
  • Zastosowanie zachowania niezdefiniowanego do zapewnienia efektywnego projektu
  • Podsumowanie
  • Pytania

Rozdział 12. Projektowanie pod kątem wydajności

  • Interakcja między projektem i wydajnością
  • Projektowanie pod kątem wydajności
    • Zasada minimalnej ilości informacji
    • Zasada maksymalnej ilości informacji
  • Kwestie związane z projektowaniem interfejsu API
    • Projektowanie interfejsu API pod kątem współbieżności
    • Kopiowanie i wysyłanie danych
  • Projektowanie pod kątem optymalnego dostępu do danych
  • Kompromisy związane z wydajnością
    • Projekt interfejsu
    • Projektowanie komponentów
    • Błędy i zachowanie niezdefiniowane
  • Podejmowanie przemyślanych decyzji projektowych
  • Podsumowanie
  • Pytania

Odpowiedzi

Kategoria: Hardware
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-283-9251-9
Rozmiar pliku: 20 MB

BESTSELLERY

Kategorie: