reklama - zainteresowany?

Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprz - Helion

Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprz
Autor: Fedor G. Pikus
Tytuł oryginału: The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples
Tłumaczenie: Piotr Pilch
ISBN: 978-83-283-9250-2
stron: 446, Format: 168x237, okładka: mi
Data wydania: 2022-07-01
Księgarnia: Helion

Cena książki: 57,84 zł (poprzednio: 88,98 zł)
Oszczędzasz: 35% (-31,14 zł)

Dodaj do koszyka Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprz

Tagi: Inne | Optymalizacja wydajno

Jeszcze kilka lat temu, by zwi

Dodaj do koszyka Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprz

 

Osoby które kupowały "Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprz", wybierały także:

  • Windows Media Center. Domowe centrum rozrywki
  • Przywództwo w świecie VUCA. Jak być skutecznym liderem w niepewnym środowisku
  • Superinteligencja. Scenariusze, strategie, zagro
  • Lean dla bystrzak

Dodaj do koszyka Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprz

Spis treści

Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprzętu i kompilatorów -- 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

Dodaj do koszyka Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprz

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2025 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.