ورود به حساب

نام کاربری گذرواژه

گذرواژه را فراموش کردید؟ کلیک کنید

حساب کاربری ندارید؟ ساخت حساب

ساخت حساب کاربری

نام نام کاربری ایمیل شماره موبایل گذرواژه

برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید


09117307688
09117179751

در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید

دسترسی نامحدود

برای کاربرانی که ثبت نام کرده اند

ضمانت بازگشت وجه

درصورت عدم همخوانی توضیحات با کتاب

پشتیبانی

از ساعت 7 صبح تا 10 شب

دانلود کتاب The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples

دانلود کتاب هنر نوشتن برنامه های کارآمد: راهنمای برنامه نویس پیشرفته برای استفاده کارآمد از سخت افزار و بهینه سازی کامپایلر با استفاده از مثال های C++

The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples

مشخصات کتاب

The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples

ویرایش: [1 ed.] 
نویسندگان:   
سری:  
ISBN (شابک) : 1800208111, 9781800208117 
ناشر: Packt Publishing 
سال نشر: 2021 
تعداد صفحات: 452 
زبان: English 
فرمت فایل : EPUB (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) 
حجم فایل: 11 Mb 

قیمت کتاب (تومان) : 58,000



ثبت امتیاز به این کتاب

میانگین امتیاز به این کتاب :
       تعداد امتیاز دهندگان : 4


در صورت تبدیل فایل کتاب The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.

توجه داشته باشید کتاب هنر نوشتن برنامه های کارآمد: راهنمای برنامه نویس پیشرفته برای استفاده کارآمد از سخت افزار و بهینه سازی کامپایلر با استفاده از مثال های C++ نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.


توضیحاتی در مورد کتاب هنر نوشتن برنامه های کارآمد: راهنمای برنامه نویس پیشرفته برای استفاده کارآمد از سخت افزار و بهینه سازی کامپایلر با استفاده از مثال های C++



با تکنیک های مختلف بهبود عملکرد مانند همزمانی، برنامه نویسی بدون قفل، عملیات اتمی، موازی سازی و مدیریت حافظه آشنا شوید

ویژگی های کلیدی

  • محدودیت‌های CPUهای مدرن و تاثیر عملکرد آنها را درک کنید
  • دریابید که چگونه می‌توانید از نوشتن کد ناکارآمد جلوگیری کنید و بهترین بهینه‌سازی‌ها را از کامپایلر دریافت کنید
  • بیاموزید معاوضه ها و هزینه های نوشتن برنامه های با کارایی بالا

توضیحات کتاب

ناهار رایگان عالی \"عملکرد مراقبت از خود\" به پایان رسید. تا همین اواخر، با ارتقاء CPUها، برنامه ها به خودی خود سریعتر می شدند، اما دیگر این اتفاق نمی افتد. فرکانس ساعت پردازنده های جدید تقریبا به اوج خود رسیده است. معماری‌های جدید پیشرفت‌های کوچکی در برنامه‌های موجود ایجاد می‌کنند، اما این فقط کمی کمک می‌کند. پردازنده‌ها بزرگ‌تر و قدرتمندتر می‌شوند، اما بیشتر این توان جدید توسط افزایش تعداد هسته‌های پردازشی و دیگر واحدهای محاسباتی «اضافی» مصرف می‌شود. برای نوشتن نرم‌افزار کارآمد، اکنون باید بدانید که چگونه با استفاده خوب از منابع محاسباتی موجود، برنامه‌نویسی کنید، و این کتاب به شما یاد می‌دهد که چگونه این کار را انجام دهید.

این کتاب تمام جنبه‌های اصلی نوشتن را پوشش می‌دهد. برنامه های کارآمد، مانند استفاده کارآمد از منابع CPU و حافظه، اجتناب از محاسبات غیر ضروری، اندازه گیری عملکرد، و نحوه استفاده مناسب از همزمانی و چند رشته ای. همچنین با بهینه سازی کامپایلر و نحوه استفاده کارآمدتر از زبان برنامه نویسی (C) آشنا خواهید شد. در نهایت، متوجه خواهید شد که چگونه تصمیمات طراحی بر عملکرد تأثیر می گذارد.

در پایان این کتاب، نه تنها دانش کافی از پردازنده ها و کامپایلرها برای نوشتن برنامه های کارآمد خواهید داشت، بلکه قادر خواهید بود برای درک اینکه از چه تکنیک هایی باید استفاده کرد و چه چیزی را در حین بهبود عملکرد اندازه گیری کرد. در اصل، این کتاب در مورد یادگیری نحوه یادگیری است.

آنچه یاد خواهید گرفت

  • دریابید که چگونه از منابع محاسباتی سخت افزاری در برنامه های خود به طور موثر استفاده کنید
  • رابطه بین نظم حافظه و موانع حافظه را درک کنید
  • با مفاهیم عملکرد ساختارهای داده و سازمان‌های مختلف آشنا شوید
  • تأثیر عملکرد حافظه‌ی همزمان مورد دسترسی را ارزیابی کنید و نحوه به حداقل رساندن آن it
  • کشف کنید چه زمانی از تکنیک های برنامه نویسی بدون قفل استفاده کنید و چه زمانی استفاده نکنید
  • روش های مختلف را برای بهبود اثربخشی بهینه سازی های کامپایلر کاوش کنید
  • API های طراحی همزمان ساختارهای داده و ساختارهای داده با کارایی بالا برای جلوگیری از ناکارآمدی ها

این کتاب برای چه کسانی است

این کتاب برای توسعه دهندگان و برنامه نویسان با تجربه است که روی پروژه های حیاتی عملکرد و کار می کنند. می خواهند تکنیک های مختلفی را برای بهبود عملکرد کد خود یاد بگیرند. برنامه نویسانی که به تجارت الگوریتمی، بازی، بیوانفورماتیک، ژنومیک محاسباتی یا دینامیک سیالات محاسباتی تعلق دارند، می توانند تکنیک های مختلفی را از این کتاب بیاموزند و در حوزه کاری خود به کار ببرند.

اگرچه این کتاب از زبان C استفاده می کند. مفاهیم نشان داده شده در کتاب را می توان به راحتی به سایر زبان های کامپایل شده مانند C، Java، Rust، Go و غیره منتقل کرد یا به کار برد.

فهرست مطالب

  1. مقدمه به عملکرد و همزمانی
  2. اندازه گیری های عملکرد
  3. معماری CPU، منابع، و مفاهیم عملکرد
  4. معماری حافظه و عملکرد
  5. رشته ها، حافظه، و Concurrency
  6. Concurrency و Performance
  7. ساختارهای داده برای Concurrency
  8. Concurrency در C
  9. High-Performance C
  10. بهینه سازی کامپایلر در C
  11. رفتار و عملکرد تعریف نشده
  12. طراحی برای عملکرد

توضیحاتی درمورد کتاب به خارجی

Get to grips with various performance improvement techniques such as concurrency, lock-free programming, atomic operations, parallelism, and memory management

Key Features

  • Understand the limitations of modern CPUs and their performance impact
  • Find out how you can avoid writing inefficient code and get the best optimizations from the compiler
  • Learn the tradeoffs and costs of writing high-performance programs

Book Description

The great free lunch of "performance taking care of itself" is over. Until recently, programs got faster by themselves as CPUs were upgraded, but that doesn't happen anymore. The clock frequency of new processors has almost peaked. New architectures provide small improvements to existing programs, but this only helps slightly. Processors do get larger and more powerful, but most of this new power is consumed by the increased number of processing cores and other "extra" computing units. To write efficient software, you now have to know how to program by making good use of the available computing resources, and this book will teach you how to do that.

The book covers all the major aspects of writing efficient programs, such as using CPU resources and memory efficiently, avoiding unnecessary computations, measuring performance, and how to put concurrency and multithreading to good use. You'll also learn about compiler optimizations and how to use the programming language (C++) more efficiently. Finally, you'll understand how design decisions impact performance.

By the end of this book, you'll not only have enough knowledge of processors and compilers to write efficient programs, but you'll also be able to understand which techniques to use and what to measure while improving performance. At its core, this book is about learning how to learn.

What you will learn

  • Discover how to use the hardware computing resources in your programs effectively
  • Understand the relationship between memory order and memory barriers
  • Familiarize yourself with the performance implications of different data structures and organizations
  • Assess the performance impact of concurrent memory accessed and how to minimize it
  • Discover when to use and when not to use lock-free programming techniques
  • Explore different ways to improve the effectiveness of compiler optimizations
  • Design APIs for concurrent data structures and high-performance data structures to avoid inefficiencies

Who this book is for

This book is for experienced developers and programmers who work on performance-critical projects and want to learn different techniques to improve the performance of their code. Programmers who belong to algorithmic trading, gaming, bioinformatics, computational genomics, or computational fluid dynamics communities can learn various techniques from this book and apply them in their domain of work.

Although this book uses the C++ language, the concepts demonstrated in the book can be easily transferred or applied to other compiled languages such as C, Java, Rust, Go, and more.

Table of Contents

  1. Introduction to Performance and Concurrency
  2. Performance Measurements
  3. CPU Architecture, Resources, and Performance Implications
  4. Memory Architecture and Performance
  5. Threads, Memory, and Concurrency
  6. Concurrency and Performance
  7. Data Structures for Concurrency
  8. Concurrency in C++
  9. High-Performance C++
  10. Compiler Optimizations in C++
  11. Undefined Behavior and Performance
  12. Design for Performance


فهرست مطالب

Cover
Title Page
Copyright and Credits
Contributors
Table of Contents
Preface
Section 1 – Performance Fundamentals
Chapter 1: Introduction to Performance and Concurrency
	Why focus on performance?
	Why performance matters
	What is performance?
		Performance as throughput
		Performance as power consumption
		Performance for real-time applications
		Performance as dependent on context
	Evaluating, estimating, and predicting performance
	Learning about high performance
	Summary
	Questions
Chapter 2: Performance Measurements
	Technical requirements
	Performance measurements by example
	Performance benchmarking
		C++ chrono timers
		High-resolution timers
	Performance profiling
		The perf profiler
		Detailed profiling with perf
		The Google Performance profiler
		Profiling with call graphs
		Optimization and inlining
		Practical profiling
	Micro-benchmarking
		Basics of micro-benchmarking
		Micro-benchmarking and compiler optimizations
		Google Benchmark
		Micro-benchmarks are lies
	Summary
	Questions
Chapter 3: CPU Architecture, Resources, and Performance
	Technical requirements
	The performance begins with the CPU
	Probing performance with micro-benchmarks
		Visualizing instruction-level parallelism
	Data dependencies and pipelining
	Pipelining and branches
		Branch prediction
		Profiling for branch mispredictions
	Speculative execution
	Optimization of complex conditions
	Branchless computing
		Loop unrolling
		Branchless selection
		Branchless computing examples
	Summary
	Questions
Chapter 4: Memory Architecture and Performance
	Technical requirements
	The performance begins with the CPU but does not end there
	Measuring memory access speed
		Memory architecture
		Measuring memory and cache speeds
	The speed of memory: the numbers
		The speed of random memory access
		The speed of sequential memory access
		Memory performance optimizations in hardware
	Optimizing memory performance
		Memory-efficient data structures
		Profiling memory performance
		Optimizing algorithms for memory performance
	The ghost in the machine
		What is Spectre?
		Spectre by example
		Spectre, unleashed
	Summary
	Questions
Chapter 5: Threads, Memory, and Concurrency
	Technical requirements
	Understanding threads and concurrency
		What is a thread?
		Symmetric multi-threading
		Threads and memory
		Memory-bound programs and concurrency
	Understanding the cost of memory synchronization
	Why data sharing is expensive
	Learning about concurrency and order
		The need for order
		Memory order and memory barriers
		Memory order in C++
	Memory model
	Summary
	Questions
Section 2 – Advanced Concurrency
Chapter 6: Concurrency and Performance
	Technical requirements
	What is needed to use concurrency effectively?
	Locks, alternatives, and their performance
		Lock-based, lock-free, and wait-free programs
		Different locks for different problems
		Lock-based versus lock-free, what is the real difference?
	Building blocks for concurrent programming
		The basics of concurrent data structures
		Counters and accumulators
		Publishing protocol
		Smart pointers for concurrent programming
	Summary
	Questions
Chapter 7: Data Structures for Concurrency
	Technical requirements
	What is a thread-safe data structure?
		The best kind of thread safety
		The real thread safety
	The thread-safe stack
		Interface design for thread safety
		Performance of mutex-guarded data structures
		Performance requirements for different uses
		Stack performance in detail
		Performance estimates for synchronization schemes
		Lock-free stack
	The thread-safe queue
		Lock-free queue
		Non-sequentially consistent data structures
		Memory management for concurrent data structures
	The thread-safe list
		Lock-free list
	Summary
	Questions
Chapter 8: Concurrency in C++
	Technical requirements
	Concurrency support in C++11
	Concurrency support in C++17
	Concurrency support in C++20
		The foundations of coroutines
		Coroutine C++ syntax
		Coroutine examples
	Summary
	Questions
Section 3 – Designing and Coding High-Performance Programs
Chapter 9: High-Performance C++
	Technical requirements
	What is the efficiency of a programming language?
	Unnecessary copying
		Copying and argument passing
		Copying as an implementation technique
		Copying to store data
		Copying of return values
		Using pointers to avoid copying
		How to avoid unnecessary copying
	Inefficient memory management
		Unnecessary memory allocations
		Memory management in concurrent programs
		Avoiding memory fragmentation
	Optimization of conditional execution
	Summary
	Questions
Chapter 10: Compiler Optimizations in C++
	Technical requirements
	Compilers optimizing code
		Basics of compiler optimizations
		Function inlining
		What does the compiler really know?
		Lifting knowledge from runtime to compile time
	Summary
	Questions
Chapter 11: Undefined Behavior and Performance
	Technical requirements
	What is undefined behavior?
	Why have undefined behavior?
	Undefined behavior and C++ optimization
	Using undefined behavior for efficient design
	Summary
	Questions
Chapter 12: Design for Performance
	Technical requirements
	Interaction between the design and performance
	Design for performance
		The minimum information principle
		The maximum information principle
	API design considerations
		API design for concurrency
		Copying and sending data
	Design for optimal data access
	Performance trade-offs
		Interface design
		Component design
		Errors and undefined behavior
	Making informed design decisions
	Summary
	Questions
Assessments
	Chapter 1:
	Chapter 2:
	Chapter 3:
	Chapter 4:
	Chapter 5:
	Chapter 6:
	Chapter 7:
	Chapter 8:
	Chapter 9:
	Chapter 10:
	Chapter 11:
	Chapter 12:
Other Books You May Enjoy
Index




نظرات کاربران