Категорії
Електронні книги
-
Бізнес та економіка
- Біткойн
- Ділова жінка
- Коучинг
- Контроль
- Електронний бізнес
- Економіка
- Фінанси
- Фондова біржа та інвестиції
- Особисті компетенції
- Комп'ютер в офісі
- Комунікація та переговори
- Малий бізнес
- Маркетинг
- Мотивація
- Мультимедійне навчання
- Нерухомість
- Переконання та НЛП
- Податки
- Соціальна політика
- Порадники
- Презентації
- Лідерство
- Зв'язки з громадськістю
- Звіти, аналізи
- Секрет
- Соціальні засоби комунікації
- Продаж
- Стартап
- Ваша кар'єра
- Управління
- Управління проектами
- Людські ресурси (HR)
-
Для дітей
-
Для молоді
-
Освіта
-
Енциклопедії, словники
-
Електронна преса
- Architektura i wnętrza
- Biznes i Ekonomia
- Будинок та сад
- Електронний бізнес
- Фінанси
- Особисті фінанси
- Бізнес
- Фотографія
- Інформатика
- Відділ кадрів та оплата праці
- Комп'ютери, Excel
- Бухгалтерія
- Культура та література
- Наукові та академічні
- Охорона навколишнього середовища
- Впливові
- Освіта
- Податки
- Подорожі
- Психологія
- Релігія
- Сільське господарство
- Ринок книг і преси
- Транспорт та спедиція
- Здоров'я та краса
-
Історія
-
Інформатика
- Офісні застосунки
- Бази даних
- Біоінформатика
- Бізнес ІТ
- CAD/CAM
- Digital Lifestyle
- DTP
- Електроніка
- Цифрова фотографія
- Комп'ютерна графіка
- Ігри
- Хакування
- Hardware
- IT w ekonomii
- Наукові пакети
- Шкільні підручники
- Основи комп'ютера
- Програмування
- Мобільне програмування
- Інтернет-сервери
- Комп'ютерні мережі
- Стартап
- Операційні системи
- Штучний інтелект
- Технологія для дітей
- Вебмайстерність
-
Інше
-
Іноземні мови
-
Культура та мистецтво
-
Шкільні читанки
-
Література
- Антології
- Балада
- Біографії та автобіографії
- Для дорослих
- Драми
- Журнали, щоденники, листи
- Епос, епопея
- Нарис
- Наукова фантастика та фантастика
- Фельєтони
- Художня література
- Гумор, сатира
- Інше
- Класичний
- Кримінальний роман
- Нехудожня література
- Художня література
- Mity i legendy
- Лауреати Нобелівської премії
- Новели
- Побутовий роман
- Okultyzm i magia
- Оповідання
- Спогади
- Подорожі
- Оповідна поезія
- Поезія
- Політика
- Науково-популярна
- Роман
- Історичний роман
- Проза
- Пригодницька
- Журналістика
- Роман-репортаж
- Romans i literatura obyczajowa
- Сенсація
- Трилер, жах
- Інтерв'ю та спогади
-
Природничі науки
-
Соціальні науки
-
Шкільні підручники
-
Науково-популярна та академічна
- Археологія
- Bibliotekoznawstwo
- Кінознавство / Теорія кіно
- Філологія
- Польська філологія
- Філософія
- Finanse i bankowość
- Географія
- Економіка
- Торгівля. Світова економіка
- Історія та археологія
- Історія мистецтва і архітектури
- Культурологія
- Мовознавство
- літературні студії
- Логістика
- Математика
- Ліки
- Гуманітарні науки
- Педагогіка
- Навчальні засоби
- Науково-популярна
- Інше
- Психологія
- Соціологія
- Театральні студії
- Богослов’я
- Економічні теорії та науки
- Transport i spedycja
- Фізичне виховання
- Zarządzanie i marketing
-
Порадники
-
Ігрові посібники
-
Професійні та спеціальні порадники
-
Юридична
- Безпека життєдіяльності
- Історія
- Дорожній кодекс. Водійські права
- Юридичні науки
- Охорона здоров'я
- Загальне, компендіум
- Академічні підручники
- Інше
- Закон про будівництво і житло
- Цивільне право
- Фінансове право
- Господарське право
- Господарське та комерційне право
- Кримінальний закон
- Кримінальне право. Кримінальні злочини. Кримінологія
- Міжнародне право
- Міжнародне та іноземне право
- Закон про охорону здоров'я
- Закон про освіту
- Податкове право
- Трудове право та законодавство про соціальне забезпечення
- Громадське, конституційне та адміністративне право
- Кодекс про шлюб і сім'ю
- Аграрне право
- Соціальне право, трудове право
- Законодавство Євросоюзу
- Промисловість
- Сільське господарство та захист навколишнього середовища
- Словники та енциклопедії
- Державні закупівлі
- Управління
-
Путівники та подорожі
- Африка
- Альбоми
- Південна Америка
- Центральна та Північна Америка
- Австралія, Нова Зеландія, Океанія
- Австрія
- Азії
- Балкани
- Близький Схід
- Болгарія
- Китай
- Хорватія
- Чеська Республіка
- Данія
- Єгипет
- Естонія
- Європа
- Франція
- Гори
- Греція
- Іспанія
- Нідерланди
- Ісландія
- Литва
- Латвія
- Mapy, Plany miast, Atlasy
- Мініпутівники
- Німеччина
- Норвегія
- Активні подорожі
- Польща
- Португалія
- Інше
- Росія
- Румунія
- Словаччина
- Словенія
- Швейцарія
- Швеція
- Світ
- Туреччина
- Україна
- Угорщина
- Велика Британія
- Італія
-
Психологія
- Філософія життя
- Kompetencje psychospołeczne
- Міжособистісне спілкування
- Mindfulness
- Загальне
- Переконання та НЛП
- Академічна психологія
- Психологія душі та розуму
- Психологія праці
- Relacje i związki
- Батьківство та дитяча психологія
- Вирішення проблем
- Інтелектуальний розвиток
- Секрет
- Сексуальність
- Спокушання
- Зовнішній вигляд та імідж
- Філософія життя
-
Релігія
-
Спорт, фітнес, дієти
-
Техніка і механіка
Аудіокниги
-
Бізнес та економіка
- Біткойн
- Ділова жінка
- Коучинг
- Контроль
- Електронний бізнес
- Економіка
- Фінанси
- Фондова біржа та інвестиції
- Особисті компетенції
- Комунікація та переговори
- Малий бізнес
- Маркетинг
- Мотивація
- Нерухомість
- Переконання та НЛП
- Податки
- Порадники
- Презентації
- Лідерство
- Зв'язки з громадськістю
- Секрет
- Соціальні засоби комунікації
- Продаж
- Стартап
- Ваша кар'єра
- Управління
- Управління проектами
- Людські ресурси (HR)
-
Для дітей
-
Для молоді
-
Освіта
-
Енциклопедії, словники
-
Історія
-
Інформатика
-
Інше
-
Іноземні мови
-
Культура та мистецтво
-
Шкільні читанки
-
Література
- Антології
- Балада
- Біографії та автобіографії
- Для дорослих
- Драми
- Журнали, щоденники, листи
- Епос, епопея
- Нарис
- Наукова фантастика та фантастика
- Фельєтони
- Художня література
- Гумор, сатира
- Інше
- Класичний
- Кримінальний роман
- Нехудожня література
- Художня література
- Mity i legendy
- Лауреати Нобелівської премії
- Новели
- Побутовий роман
- Okultyzm i magia
- Оповідання
- Спогади
- Подорожі
- Поезія
- Політика
- Науково-популярна
- Роман
- Історичний роман
- Проза
- Пригодницька
- Журналістика
- Роман-репортаж
- Romans i literatura obyczajowa
- Сенсація
- Трилер, жах
- Інтерв'ю та спогади
-
Природничі науки
-
Соціальні науки
-
Науково-популярна та академічна
-
Порадники
-
Професійні та спеціальні порадники
-
Юридична
-
Путівники та подорожі
-
Психологія
- Філософія життя
- Міжособистісне спілкування
- Mindfulness
- Загальне
- Переконання та НЛП
- Академічна психологія
- Психологія душі та розуму
- Психологія праці
- Relacje i związki
- Батьківство та дитяча психологія
- Вирішення проблем
- Інтелектуальний розвиток
- Секрет
- Сексуальність
- Спокушання
- Зовнішній вигляд та імідж
- Філософія життя
-
Релігія
-
Спорт, фітнес, дієти
-
Техніка і механіка
Відеокурси
-
Бази даних
-
Big Data
-
Biznes, ekonomia i marketing
-
Кібербезпека
-
Data Science
-
DevOps
-
Для дітей
-
Електроніка
-
Графіка / Відео / CAX
-
Ігри
-
Microsoft Office
-
Інструменти розробки
-
Програмування
-
Особистісний розвиток
-
Комп'ютерні мережі
-
Операційні системи
-
Тестування програмного забезпечення
-
Мобільні пристрої
-
UX/UI
-
Веброзробка, Web development
-
Управління
Подкасти
- Електронні книги
- Hardware
- Розробка та обслуговування
- Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprzętu i kompilatorów
Деталі електронної книги
Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprzętu i kompilatorów
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!
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
- Назва: Sztuka tworzenia wydajnego kodu. Przewodnik po zaawansowanych technikach wykorzystywania sprzętu i kompilatorów
- Автор: Fedor G. Pikus
- Оригінальна назва: The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples
- Переклад: Piotr Pilch
- ISBN: 978-83-283-9251-9, 9788328392519
- Дата видання: 2022-10-11
- Формат: Eлектронна книга
- Ідентифікатор видання: szttwo
- Видавець: Helion