Book description
C++. Optymalizacja koduTable of contents
- Okładka Strona
- Tytuł Strona
- Prawa autorskich Strona
- Poświęcenie Strona
- Spis treści
- Przedmowa
- 1 Wprowadzenie do optymalizacji
-
2 Wpływ działania komputera na optymalizację
- Nieprawdziwe przekonania języka C++ o komputerach
-
Prawda o komputerach
- Pamięć jest powolna
- Dostęp do pamięci nie zamyka się w bajtach
- Nie wszystkie operacje dostępu do pamięci są równie wolne
- Słowa mają najbardziej i najmniej znaczący koniec
- Pamięć ma ograniczoną pojemność
- Wykonanie instrukcji zabiera dużo czasu
- Komputery mają trudności z podejmowaniem decyzji
- Istnieje wiele strumieni wykonania programu
- Wywoływanie systemu operacyjnego jest kosztowne
- C++ również kłamie
- Podsumowanie
- 3 Mierzenie wydajności
-
4 Optymalizowanie użycia ciągów: przykład
- Dlaczego ciągi są tak problematyczne
-
Pierwsze podejście do optymalizacji ciągów
- Użyj operacji mutujących do eliminowania wartości tymczasowych
- Redukuj realokację poprzez rezerwację obszaru
- Eliminuj kopiowanie argumentów std::string
- Eliminuj wyłuskania wskaźników przy użyciu iteratorów
- Eliminuj kopiowanie wartości zwrotnych
- Użyj tablic znaków zamiast ciągów
- Podsumowanie pierwszego podejścia do optymalizacji
- Drugie podejście do optymalizacji ciągów
- Eliminowanie konwersji ciągów
- Podsumowanie
- 5 Optymalizowanie algorytmów
-
6 Optymalizacja zmiennych dynamicznych
- Powtórzenie wiadomości o zmiennych C++
- Powtórzenie wiadomości o API zmiennych dynamicznych w C++
- Redukowanie użycia zmiennych dynamicznych
- Redukowanie realokacji zmiennych dynamicznych
- Eliminowanie niepotrzebnego kopiowania
- Implementowanie semantyki przenoszenia
- Spłaszczanie struktur danych
- Podsumowanie
-
7 Optymalizowanie aktywnych instrukcji
-
Usuwanie kodu z pętli
- Buforuj wartość końcową pętli
- Użyj bardziej efektywnych instrukcji pętli
- Odliczaj w dół zamiast w górę
- Usuń z pętli niezależny kod
- Usuń z pętli niepotrzebne wywołania funkcji
- Usuń z pętli ukryte wywołania funkcji
- Usuń z pętli kosztowne, wolno zmieniające się wywołania
- Przesuń pętle do funkcji, aby zredukować dodatkowy koszt wywołań
- Rzadziej wykonuj niektóre akcje
- A co z całą resztą?
-
Usuwanie kodu z funkcji
- Koszt wywołań funkcji
- Deklaruj krótkie funkcje jako inline
- Definiuj funkcje przed pierwszym użyciem
- Eliminuj niepotrzebny polimorfizm
- Usuń nieużywane interfejsy
- Wybieraj implementację w czasie kompilacji przy użyciu szablonów
- Eliminuj zastosowania idiomu PIMPL
- Eliminuj wywołania bibliotek DLL
- Użyj statycznych funkcji składowych zamiast funkcji składowych
- Przenieś wirtualny destruktor do klasy podstawowej
- Optymalizowanie wyrażeń
- Optymalizacja idiomów przepływu sterowania
- Podsumowanie
-
Usuwanie kodu z pętli
-
8 Zastosowanie lepszych bibliotek
- Optymalizacja użycia biblioteki standardowej
- Optymalizowanie istniejących bibliotek
-
Projektowanie zoptymalizowanych bibliotek
- Koduj szybko, ubolewaj w czasie wolnym
- W projektowaniu bibliotek ascetyzm to zaleta
- Podejmuj decyzje o alokacji pamięci poza biblioteką
- Programuj szybkie biblioteki
- Łatwiej jest optymalizować funkcje niż framework
- Spłaszcz hierarchie dziedziczenia
- Spłaszcz łańcuchy wywołań
- Spłaszcz wielowarstwowe projekty
- Unikaj dynamicznego wyszukiwania
- Wystrzegaj się „wszechmocnych funkcji”
- Podsumowanie
-
9 Optymalizacja wyszukiwania i sortowania
- Tabele klucz/wartość wykorzystujące std::map i std::string
- Zestaw narzędzi do podnoszenia wydajności wyszukiwania
- Optymalizowanie wyszukiwania przy użyciu std::map
-
Optymalizowanie wyszukiwania przy użyciu nagłówka <algorithm>
- Przeszukiwana tabela klucz/wartość w kontenerach sekwencji
- std::find(): oczywista nazwa, koszt czasowy O(n)
- std::binary_search(): nie zwraca wartości
- Wyszukiwanie binarne przy użyciu std::equal_range()
- Wyszukiwanie binarne przy użyciu std::lower_bound()
- Własna implementacja wyszukiwania binarnego
- Własna implementacja wyszukiwania binarnego przy użyciu strcmp()
- Optymalizowanie wyszukiwania w tabelach mieszania klucz/wartość
- Konsekwencje abstrakcji Stepanova
- Optymalizuj sortowanie przy użyciu standardowej biblioteki C++
- Podsumowanie
- 10 Optymalizowanie struktur danych
- 11 Optymalizowanie we/wy
-
12 Optymalizowanie równoległości
- Powtórzenie informacji o równoległości
- Powtórzenie informacji o obsłudze równoległości w języku C++
- Optymalizowanie wielowątkowych programów C++
-
Zwiększenie wydajności synchronizacji
- Redukuj zakres sekcji krytycznych
- Ograniczaj liczbę równoległych wątków
- Unikaj problemu masowego pędu
- Unikaj konwoju blokady
- Zredukuj rywalizację
- Nie oczekuj aktywnie w jednordzeniowym systemie
- Nie czekaj w nieskończoność
- Tworzenie własnego mutexu może być nieefektywne
- Ogranicz długość kolejki wyjściowej producenta
- Biblioteki wspierające równoległość
- Podsumowanie
- 13 Optymalizowanie zarządzania pamięcią
- Indeks
- O autorze
Product information
- Title: C++. Optymalizacja kodu
- Author(s):
- Release date: January 2016
- Publisher(s): APN Promise
- ISBN: 9788375411911
You might also like
book
Pro Android C++ with the NDK
Android is one of the major players in the mobile phone market. Android is a mobile …
book
Myśl w języku Java!
Myśl w języku Java! Nauka programowania Zacznij myśleć jak programista! Naucz się łączyć umiejętności płynące z …
book
Język C w pigułce
Nowe wydanie tego klasycznego podręcznika zawiera jednoznaczne i szczegółowe wyjaśnienie każdej funkcjonalności języka C i biblioteki …
book
Linux. Programowanie systemowe
Wykorzystaj moc Linuksa i twórz funkcjonalne oprogramowanie systemowe!Jak zarz?dza? plikowymi operacjami wej?cia i wyj?cia? Jak zablokowa? …