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: 53,40 zł (poprzednio: 89,00 zł)
Oszczędzasz: 40% (-35,60 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
  • Superinteligencja. Scenariusze, strategie, zagro
  • Przywództwo w Å›wiecie VUCA. Jak być skutecznym liderem w niepewnym Å›rodowisku
  • Twoja firma w social mediach. Podr

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-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.