Kategorien
E-Books
-
Wirtschaft
- Bitcoin
- Geschäftsfrau
- Coaching
- Controlling
- E-Business
- Ökonomie
- Finanzen
- Börse und Investitionen
- Persönliche Kompetenzen
- Computer im Büro
- Kommunikation und Verhandlungen
- Kleines Unternehmen
- Marketing
- Motivation
- Multimedia-Training
- Immobilien
- Überzeugung und NLP
- Steuern
- Sozialpolitik
- Handbȕcher
- Präsentationen
- Führung
- Public Relation
- Berichte, Analysen
- Geheimnis
- Social Media
- Verkauf
- Start-up
- Ihre Karriere
- Management
- Projektmanagement
- Personal (HR)
-
Für Kinder
-
Für Jugendliche
-
Bildung
-
Enzyklopädien, Wörterbücher
-
E-Presse
- Architektura i wnętrza
- Biznes i Ekonomia
- Haus und Garten
- E-Business
- Finanzen
- Persönliche Finanzen
- Unternehmen
- Fotografie
- Informatik
- HR und Gehaltsabrechnung
- Computer, Excel
- Buchhaltung
- Kultur und Literatur
- Wissenschaftlich und akademisch
- Umweltschutz
- meinungsbildend
- Bildung
- Steuern
- Reisen
- Psychologie
- Religion
- Landwirtschaft
- Buch- und Pressemarkt
- Transport und Spedition
- Gesundheit und Schönheit
-
Geschichte
-
Informatik
- Office-Programme
- Datenbank
- Bioinformatik
- IT Branche
- CAD/CAM
- Digital Lifestyle
- DTP
- Elektronik
- Digitale Fotografie
- Computergrafik
- Spiele
- Hacking
- Hardware
- IT w ekonomii
- Wissenschaftliche Pakete
- Schulbücher
- Computergrundlagen
- Programmierung
- Mobile-Programmierung
- Internet-Server
- Computernetzwerke
- Start-up
- Betriebssysteme
- Künstliche Inteligenz
- Technik für Kinder
- Webmaster
-
Andere
-
Fremdsprachen lernen
-
Kultur und Kunst
-
Lektüre
-
Literatur
- Anthologien
- Ballade
- Biografien und Autobiografien
- Für Erwachsene
- Drama
- Tagebücher, Memoiren, Briefe
- Epos
- Essay
- Science Fiction
- Felietonys
- Fiktion
- Humor, Satire
- Andere
- Klassisch
- Krimi
- Sachbücher
- Belletristik
- Mity i legendy
- Nobelpreisträger
- Kurzgeschichten
- Gesellschaftlich
- Okultyzm i magia
- Erzählung
- Erinnerungen
- Reisen
- Gedicht
- Poesie
- Politik
- Populärwissenschaftlich
- Roman
- Historischer Roman
- Prosa
- Abenteuer
- Journalismus
- Reportage
- Romans i literatura obyczajowa
- Sensation
- Thriller, Horror
- Interviews und Erinnerungen
-
Naturwissenschaften
-
Sozialwissenschaften
-
Schulbücher
-
Populärwissenschaft und akademisch
- Archäologie
- Bibliotekoznawstwo
- Filmwissenschaft
- Philologie
- Polnische Philologie
- Philosophie
- Finanse i bankowość
- Erdkunde
- Wirtschaft
- Handel. Weltwirtschaft
- Geschichte und Archäologie
- Kunst- und Architekturgeschichte
- Kulturwissenschaft
- Linguistik
- Literaturwissenschaft
- Logistik
- Mathematik
- Medizin
- Geisteswissenschaften
- Pädagogik
- Lehrmittel
- Populärwissenschaftlich
- Andere
- Psychologie
- Soziologie
- Theatrologie
- Teologie
- Theorien und Wirtschaftswissenschaften
- Transport i spedycja
- Sportunterricht
- Zarządzanie i marketing
-
Handbȕcher
-
Spielanleitungen
-
Professioneller und fachkundige Leitfaden
-
Jura
- Sicherheit und Gesundheit am Arbeitsplatz
- Geschichte
- Verkehrsregeln. Führerschein
- Rechtswissenschaften
- Gesundheitswesen
- Allgemeines. Wissenskompendium
- akademische Bücher
- Andere
- Bau- und Wohnungsrecht
- Zivilrecht
- Finanzrecht
- Wirtschaftsrecht
- Wirtschafts- und Handelsrecht
- Strafrecht
- Strafrecht. Kriminelle Taten. Kriminologie
- Internationales Recht
- Internationales und ausländisches Recht
- Gesundheitsschutzgesetz
- Bildungsrecht
- Steuerrecht
- Arbeits- und Sozialversicherungsrecht
- Öffentliches, Verfassungs- und Verwaltungsrecht
- Familien- und Vormundschaftsrecht
- Agrarrecht
- Sozialrecht, Arbeitsrecht
- EU-Recht
- Industrie
- Agrar- und Umweltschutz
- Wörterbücher und Enzyklopädien
- Öffentliche Auftragsvergabe
- Management
-
Führer und Reisen
- Afrika
- Alben
- Südamerika
- Mittel- und Nordamerika
- Australien, Neuseeland, Ozeanien
- Österreich
- Asien
- Balkan
- Naher Osten
- Bulgarien
- China
- Kroatien
- Tschechische Republik
- Dänemark
- Ägypten
- Estland
- Europa
- Frankreich
- Berge
- Griechenland
- Spanien
- Niederlande
- Island
- Litauen
- Lettland
- Mapy, Plany miast, Atlasy
- Miniführer
- Deutschland
- Norwegen
- Aktive Reisen
- Polen
- Portugal
- Andere
- Russland
- Rumänien
- Slowakei
- Slowenien
- Schweiz
- Schweden
- Welt
- Türkei
- Ukraine
- Ungarn
- Großbritannien
- Italien
-
Psychologie
- Lebensphilosophien
- Kompetencje psychospołeczne
- zwischenmenschliche Kommunikation
- Mindfulness
- Allgemeines
- Überzeugung und NLP
- Akademische Psychologie
- Psychologie von Seele und Geist
- Arbeitspsychologie
- Relacje i związki
- Elternschafts- und Kinderpsychologie
- Problemlösung
- Intellektuelle Entwicklung
- Geheimnis
- Sexualität
- Verführung
- Aussehen ind Image
- Lebensphilosophien
-
Religion
-
Sport, Fitness, Diäten
-
Technik und Mechanik
Hörbücher
-
Wirtschaft
- Bitcoin
- Geschäftsfrau
- Coaching
- Controlling
- E-Business
- Ökonomie
- Finanzen
- Börse und Investitionen
- Persönliche Kompetenzen
- Kommunikation und Verhandlungen
- Kleines Unternehmen
- Marketing
- Motivation
- Immobilien
- Überzeugung und NLP
- Steuern
- Handbȕcher
- Präsentationen
- Führung
- Public Relation
- Geheimnis
- Social Media
- Verkauf
- Start-up
- Ihre Karriere
- Management
- Projektmanagement
- Personal (HR)
-
Für Kinder
-
Für Jugendliche
-
Bildung
-
Enzyklopädien, Wörterbücher
-
Geschichte
-
Informatik
-
Andere
-
Fremdsprachen lernen
-
Kultur und Kunst
-
Lektüre
-
Literatur
- Anthologien
- Ballade
- Biografien und Autobiografien
- Für Erwachsene
- Drama
- Tagebücher, Memoiren, Briefe
- Epos
- Essay
- Science Fiction
- Felietonys
- Fiktion
- Humor, Satire
- Andere
- Klassisch
- Krimi
- Sachbücher
- Belletristik
- Mity i legendy
- Nobelpreisträger
- Kurzgeschichten
- Gesellschaftlich
- Okultyzm i magia
- Erzählung
- Erinnerungen
- Reisen
- Poesie
- Politik
- Populärwissenschaftlich
- Roman
- Historischer Roman
- Prosa
- Abenteuer
- Journalismus
- Reportage
- Romans i literatura obyczajowa
- Sensation
- Thriller, Horror
- Interviews und Erinnerungen
-
Naturwissenschaften
-
Sozialwissenschaften
-
Populärwissenschaft und akademisch
- Archäologie
- Philosophie
- Wirtschaft
- Handel. Weltwirtschaft
- Geschichte und Archäologie
- Kunst- und Architekturgeschichte
- Kulturwissenschaft
- Literaturwissenschaft
- Mathematik
- Medizin
- Geisteswissenschaften
- Pädagogik
- Lehrmittel
- Populärwissenschaftlich
- Andere
- Psychologie
- Soziologie
- Teologie
- Zarządzanie i marketing
-
Handbȕcher
-
Professioneller und fachkundige Leitfaden
-
Jura
-
Führer und Reisen
-
Psychologie
- Lebensphilosophien
- zwischenmenschliche Kommunikation
- Mindfulness
- Allgemeines
- Überzeugung und NLP
- Akademische Psychologie
- Psychologie von Seele und Geist
- Arbeitspsychologie
- Relacje i związki
- Elternschafts- und Kinderpsychologie
- Problemlösung
- Intellektuelle Entwicklung
- Geheimnis
- Sexualität
- Verführung
- Aussehen ind Image
- Lebensphilosophien
-
Religion
-
Sport, Fitness, Diäten
-
Technik und Mechanik
Videokurse
-
Datenbank
-
Big Data
-
Biznes, ekonomia i marketing
-
Cybersicherheit
-
Data Science
-
DevOps
-
Für Kinder
-
Elektronik
-
Grafik / Video / CAX
-
Spiele
-
Microsoft Office
-
Entwicklungstools
-
Programmierung
-
Persönliche Entwicklung
-
Computernetzwerke
-
Betriebssysteme
-
Softwaretest
-
Mobile Geräte
-
UX/UI
-
Web development
-
Management
Podcasts
- E-Books
- Programmierung
- C++
- Wysoce wydajny C++. Opanuj sztukę optymalizowania działania kodu. Wydanie II
Details zum E-Book
Wysoce wydajny C++. Opanuj sztukę optymalizowania działania kodu. Wydanie II
Dzisiejszy C++ jest wyjątkowym językiem programowania. Umożliwia pisanie zwięzłego, stabilnego kodu, który można zoptymalizować pod kątem wydajności w niespotykanym dotychczas stopniu. Język C++ w ciągu ostatnich lat został unowocześniony. W standardzie C++ 20 znalazło się sporo mechanizmów, które pozwalają osiągnąć wysoką efektywność kodu, a równocześnie uprzyjemniają programiście pracę. Poprawiono także ustawienia domyślne kompilatora. To wszystko sprawia, że wielu profesjonalistów wybiera właśnie C++, gdy chce uzyskać kod o wyjątkowej wydajności.
Ta książka jest drugim, zaktualizowanym i uzupełnionym wydaniem przewodnika dla programistów. Rozpoczyna się od szczegółowego wprowadzenia do nowoczesnego C++ z uwzględnieniem technik eliminowania wąskich gardeł w kodzie bazowym. Następnie omówiono zagadnienia optymalizacji struktur danych i zarzadzania pamięcią. Przedstawiono również tematykę algorytmów, zasady pisania czytelnego kodu i stosowania niestandardowych iteratorów. Zamieszczono w niej też praktyczne przykłady używania metaprogramowania w języku C++, korutyn, refleksji (do ograniczenia ilości szablonowego kodu), obiektów pośredniczących (do wprowadzania ukrytych optymalizacji), programowania współbieżnego i struktur danych wolnych od blokad. W końcowej części dokonano przeglądu algorytmów równoległych w C++.
W książce między innymi:
- nowe aspekty C++ 20
- wyspecjalizowane struktury danych na potrzeby wydajnego kodu
- metaprogramowanie i niestandardowe zarządzanie pamięcią
- mechanizm refleksji i programowanie współbieżne bez używania blokad
- subtelne optymalizacje algorytmów z biblioteki standardowej C++
- leniwe generatory i zadania asynchroniczne
Twórz wydajny i czysty kod w C++!
Przedmowa
O autorach
O korektorach merytorycznych
Wprowadzenie
- Dla kogo przeznaczona jest ta książka?
- Zawartość książki
- Jak najlepiej skorzystać z tej książki?
- Pobieranie plików z przykładowym kodem
- Stosowane konwencje typograficzne
Rozdział 1. Krótkie wprowadzenie do języka C++
- Dlaczego C++?
- Bezkosztowe abstrakcje
- Przenośność
- Odporność
- Język C++ dzisiaj
- Porównanie C++ z innymi językami
- Konkurencyjne języki i wydajność
- Mechanizmy języka C++ niezwiązane z wydajnością
- Wady języka C++
- Biblioteki i kompilatory używane w tej książce
- Podsumowanie
Rozdział 2. Podstawowe techniki języka C++
- Automatyczne wykrywanie typów za pomocą słowa kluczowego auto
- Stosowanie słowa kluczowego auto w sygnaturach funkcji
- Stosowanie słowa kluczowego auto dla zmiennych
- Semantyka przenoszenia
- Tworzenie przez kopiowanie, wymienianie i przenoszenie
- Pozyskiwanie zasobów i reguła pięciu
- Zmienne nazwane i r-wartości
- Domyślna semantyka przenoszenia i reguła zera
- Stosowanie modyfikatora && do funkcji składowych klas
- Nie przenoś obiektów, jeśli kopiowanie i tak jest pomijane
- Jeśli to możliwe, stosuj przekazywanie przez wartość
- Projektowanie interfejsów z obsługą błędów
- Kontrakty
- Obsługa błędów
- Obiekty funkcyjne i wyrażenia lambda
- Podstawowa składnia lambd w języku C++
- Klauzula przechwytywania
- Przypisywanie do lambd wskaźników do funkcji języka C
- Typy lambd
- Lambdy i typ std::function
- Generyczne lambdy
- Podsumowanie
Rozdział 3. Analizowanie i pomiar wydajności
- Złożoność asymptotyczna i notacja dużego O
- Tempo wzrostu
- Zamortyzowana złożoność czasowa
- Co mierzyć i w jaki sposób?
- Aspekty wydajności
- Przyspieszanie wykonywania kodu
- Liczniki wydajności
- Testy wydajności - dobre praktyki
- Poznaj kod i znajdź hot spoty
- Profilery z instrumentacją
- Profilery z próbkowaniem
- Mikrotesty
- Prawo Amdahla
- Pułapki związane z mikrotestami
- Przykład ilustrujący mikrotesty
- Podsumowanie
Rozdział 4. Struktury danych
- Cechy pamięci w komputerach
- Kontenery z biblioteki standardowej
- Kontenery sekwencyjne
- Kontenery asocjacyjne
- Adaptery kontenerów
- Używanie widoków
- Unikanie kopiowania dzięki typowi string_view
- Unikanie utraty informacji o długości tablic dzięki typowi std::span
- Uwagi na temat wydajności
- Zapewnianie równowagi między gwarancjami złożoności a dodatkowymi kosztami
- Znajomość i stosowanie odpowiednich funkcji API
- Tablice równoległe
- Podsumowanie
Rozdział 5. Algorytmy
- Wprowadzenie do algorytmów z biblioteki standardowej
- Ewolucja algorytmów z biblioteki standardowej
- Rozwiązywanie codziennych problemów
- Iteratory i zakresy
- Wprowadzenie do iteratorów
- Wartość wartownika i iteratory zakońcowe
- Zakresy
- Kategorie iteratorów
- Cechy algorytmów standardowych
- Algorytmy nie zmieniają wielkości kontenera
- Algorytmy zwracające dane wyjściowe wymagają zaalokowanych danych
- Algorytmy domyślnie używają funkcji operator==() i operator<()
- W algorytmach z ograniczeniami używane są projekcje
- Algorytmy wymagają, aby operatory przenoszące nie zgłaszały wyjątków
- Algorytmy mają gwarantowaną złożoność
- Algorytmy działają równie dobrze jak analogiczne funkcje z bibliotek języka C
- Pisanie i stosowanie algorytmów generycznych
- Algorytmy niegeneryczne
- Algorytmy generyczne
- Struktury danych, które mogą być używane przez algorytmy generyczne
- Dobre praktyki
- Stosowanie algorytmów z ograniczeniami
- Sortowanie tylko tych danych, które będą pobierane
- Stosowanie algorytmów standardowych zamiast surowych pętli for
- Unikanie tworzenia kopii kontenera
- Podsumowanie
Rozdział 6. Zakresy i widoki
- Powody powstania biblioteki Ranges
- Ograniczenia biblioteki Algorithm
- Widoki z biblioteki Ranges
- Widoki można łączyć w łańcuch
- Widoki zakresów i adaptery zakresów
- Widoki są zakresami bez własności elementów oferującymi gwarancje złożoności
- Widoki nie modyfikują podstawowego kontenera
- Widoki można materializować do postaci kontenerów
- Widoki są przetwarzane leniwie
- Widoki z biblioteki standardowej
- Widoki dla zakresów
- Jeszcze o typach std::string_view i std::span
- Przyszłość biblioteki Ranges
- Podsumowanie
Rozdział 7. Zarządzanie pamięcią
- Pamięć w komputerze
- Wirtualna przestrzeń adresowa
- Strony pamięci
- Migotanie
- Pamięć procesu
- Pamięć na stosie
- Pamięć na stercie
- Obiekty w pamięci
- Tworzenie i usuwanie obiektów
- Wyrównanie pamięci
- Dopełnienie
- Własność pamięci
- Pośrednie zarządzanie zasobami
- Kontenery
- Inteligentne wskaźniki
- Optymalizacja małych obiektów
- Niestandardowe zarządzanie pamięcią
- Tworzenie puli pamięci
- Niestandardowy alokator pamięci
- Stosowanie polimorficznych alokatorów pamięci
- Implementowanie niestandardowego zasobu pamięciowego
- Podsumowanie
Rozdział 8. Programowanie z przetwarzaniem w czasie kompilacji
- Wprowadzenie do metaprogramowania z użyciem szablonów
- Tworzenie szablonów
- Stosowanie liczb całkowitych jako parametrów szablonu
- Tworzenie specjalizacji szablonu
- Jak kompilator przetwarza funkcję szablonową?
- Skrócone szablony funkcji
- Pobieranie typu zmiennej za pomocą specyfikatora decltype
- Cechy typów
- Kategorie cech typów
- Stosowanie cech typów
- Programowanie z użyciem stałych wyrażeń
- Działanie funkcji ze słowem kluczowym constexpr w czasie wykonywania programu
- Deklarowanie funkcji natychmiastowych za pomocą słowa kluczowego consteval
- Instrukcja if constexpr
- Sprawdzanie błędów programistycznych w czasie kompilacji
- Ograniczenia i koncepty
- Szablon Point2D bez ograniczeń
- Omówienie składni ograniczeń i konceptów
- Wersja szablonu Point2D z ograniczeniami
- Dodawanie ograniczeń do kodu
- Koncepty w bibliotece standardowej
- Praktyczne przykłady metaprogramowania
- Przykład nr 1: tworzenie generycznej bezpiecznej funkcji rzutowania
- Przykład nr 2: obliczanie skrótów łańcuchów znaków w czasie kompilacji
- Podsumowanie
Rozdział 9. Podstawowe narzędzia
- Reprezentowanie wartości opcjonalnych za pomocą typu std::optional
- Opcjonalne zwracane wartości
- Opcjonalne zmienne składowe
- Unikanie pustych stanów w wyliczeniach
- Sortowanie i porównywanie wartości typu std::optional
- Kolekcje niejednorodne o stałej wielkości
- Stosowanie typu std::pair
- Typ std::tuple
- Kolekcje niejednorodne o dynamicznie zmienianej wielkości
- Typ std::variant
- Kolekcje niejednorodne z obiektami typu std::variant
- Dostęp do wartości z kontenera elementów typu VariantType
- Praktyczne przykłady
- Przykład nr 1: projekcje i operatory porównania
- Przykład nr 2: refleksja
- Podsumowanie
Rozdział 10. Obiekty pośredniczące i leniwe przetwarzanie
- Wprowadzenie do leniwego przetwarzania i obiektów pośredniczących
- Przetwarzanie leniwe i przetwarzanie zachłanne
- Obiekty pośredniczące
- Stosowanie obiektów pośredniczących do zapobiegania tworzeniu obiektów
- Porównywanie scalanych łańcuchów znaków z wykorzystaniem obiektu pośredniczącego
- Implementowanie obiektu pośredniczącego
- Modyfikator r-wartości
- Przypisywanie połączonej wartości do obiektu pośredniczącego
- Ocena wydajności
- Odraczanie obliczania kwadratów
- Prosta klasa reprezentująca wektory dwuwymiarowe
- Obliczenia matematyczne
- Implementowanie klasy LengthProxy
- Porównywanie długości za pomocą klasy LengthProxy
- Obliczanie długości za pomocą klasy LengthProxy
- Ocena wydajności
- Pomysłowe przeciążanie operatorów i obiekty pośredniczące
- Operator potoku jako metoda rozszerzająca
- Podsumowanie
Rozdział 11. Współbieżność
- Podstawy współbieżności
- Co sprawia, że programowanie współbieżne jest trudne?
- Współbieżność a równoległość
- Porcjowanie czasu
- Współdzielona pamięć
- Sytuacja wyścigu
- Muteks
- Zakleszczenie
- Zadania synchroniczne i zadania asynchroniczne
- Programowanie współbieżne w języku C++
- Biblioteka obsługi wątków
- Dodatkowe podstawowe mechanizmy synchronizacji w standardzie C++20
- Obsługa zmiennych atomowych w języku C++
- Model dostępu do pamięci w języku C++
- Programowanie bez blokad
- Przykład: kolejka bez blokad
- Wskazówki dotyczące wydajności
- Zapobieganie rywalizacji
- Unikanie operacji blokujących
- Liczba wątków i rdzeni procesora
- Priorytety wątków
- Koligacja wątków
- Niezamierzone współdzielenie
- Podsumowanie
Rozdział 12. Korutyny i leniwe generatory
- Kilka przykładów uzasadniających stosowanie korutyn
- Abstrakcja reprezentująca korutyny
- Podprocedury i korutyny
- Wykonywanie podprocedur i korutyn w procesorze
- Korutyny bezstosowe i korutyny stosowe
- Czego Czytelnik nauczył się do tego miejsca?
- Korutyny w języku C++
- Co zostało uwzględnione w standardzie języka C++ (i co zostało pominięte)?
- Co sprawia, że funkcja w języku C++ jest korutyną?
- Minimalny, lecz kompletny przykład
- Alokowanie stanu korutyny
- Zapobieganie wiszącym referencjom
- Obsługa błędów
- Punkty konfiguracyjne
- Generatory
- Implementowanie generatora
- Stosowanie klasy Generator
- Praktyczny przykład zastosowania generatorów
- Wydajność
- Podsumowanie
Rozdział 13. Programowanie asynchroniczne z użyciem korutyn
- Jeszcze o typach awaitable
- Automatyczne punkty wstrzymywania
- Implementowanie prostego typu reprezentującego zadanie
- Obsługa zwracanych wartości i wyjątków
- Wznawianie oczekującej korutyny
- Dodawanie obsługi zadań zwracających void
- Synchroniczne oczekiwanie na ukończenie zadania
- Testowanie asynchronicznych zadań z użyciem funkcji sync_wait()
- Tworzenie nakładki na API opartym na wywołaniach zwrotnych
- Współbieżny serwer zbudowany za pomocą biblioteki Boost.Asio
- Implementowanie serwera
- Uruchamianie serwera i nawiązywanie z nim połączenia
- Co osiągnęliśmy za pomocą serwera (i czego wciąż brakuje)?
- Podsumowanie
Rozdział 14. Algorytmy równoległe
- Znaczenie równoległości
- Algorytmy równoległe
- Ocena algorytmów równoległych
- Jeszcze o prawie Amdahla
- Implementowanie równoległego algorytmu std::transform()
- Implementowanie równoległej wersji algorytmu std::count_if()
- Implementowanie równoległej wersji algorytmu std::copy_if()
- Algorytmy równoległe z biblioteki standardowej
- Strategie wykonywania
- Obsługa wyjątków
- Dodatki i zmiany w algorytmach równoległych
- Zrównoleglanie pętli for opartej na indeksie
- Wykonywanie algorytmów w procesorze graficznym
- Podsumowanie
- Titel: Wysoce wydajny C++. Opanuj sztukę optymalizowania działania kodu. Wydanie II
- Autor: Bjorn Andrist, Viktor Sehr
- Originaler Titel: C++ High Performance: Master the art of optimizing the functioning of your C++ code, 2nd Edition
- Übersetzung: Tomasz Walczak
- ISBN: 978-83-283-9709-5, 9788328397095
- Veröffentlichungsdatum: 2023-02-14
- Format: E-book
- Artikelkennung: wywyc2
- Verleger: Helion