Merge pull request #45 from jtn7/master

Some quote fixes
This commit is contained in:
Damian Gryski 2019-05-07 11:53:24 -07:00 committed by GitHub
commit 812c2ed902
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -59,21 +59,25 @@ slider between "Fast Software" and "Fast Deployment"
People hear and mindlessly repeat "premature optimization is the root of all People hear and mindlessly repeat "premature optimization is the root of all
evil", but they miss the full context of the quote. evil", but they miss the full context of the quote.
"Programmers waste enormous amounts of time thinking about, or worrying about, > "Programmers waste enormous amounts of time thinking about, or worrying about,
the speed of noncritical parts of their programs, and these attempts at the speed of noncritical parts of their programs, and these attempts at
efficiency actually have a strong negative impact when debugging and efficiency actually have a strong negative impact when debugging and
maintenance are considered. We should forget about small efficiencies, say maintenance are considered. We should forget about small efficiencies, say
about 97% of the time: premature optimization is the root of all evil. Yet we about 97% of the time: premature optimization is the root of all evil. Yet we
should not pass up our opportunities in that critical 3%." -- Knuth should not pass up our opportunities in that critical 3%."
>
> -- <cite>Knuth</cite>
Add: https://www.youtube.com/watch?time_continue=429&v=RT46MpK39rQ Add: https://www.youtube.com/watch?time_continue=429&v=RT46MpK39rQ
* don't ignore the easy optimizations * don't ignore the easy optimizations
* more knowledge of algorithms and data structures makes more optimizations "easy" or "obvious" * more knowledge of algorithms and data structures makes more optimizations "easy" or "obvious"
"Should you optimize? "Yes, but only if the problem is important, the program Should you optimize?
> Yes, but only if the problem is important, the program
is genuinely too slow, and there is some expectation that it can be made is genuinely too slow, and there is some expectation that it can be made
faster while maintaining correctness, robustness, and clarity." faster while maintaining correctness, robustness, and clarity."
-- The Practice of Programming, Kernighan and Pike >
> -- <cite>The Practice of Programming, Kernighan and Pike</cite>
Premature optimization can also hurt you by tying you into certain decisions. Premature optimization can also hurt you by tying you into certain decisions.
The optimized code can be harder to modify if requirements change and harder to The optimized code can be harder to modify if requirements change and harder to
@ -183,9 +187,11 @@ Solution: "Premature pessimization is the root of all evil". This matches with
my Rule 1: Be deliberate. You don't need to write every line of code my Rule 1: Be deliberate. You don't need to write every line of code
to be fast, but neither should by default do wasteful things. to be fast, but neither should by default do wasteful things.
"Premature pessimization is when you write code that is slower than it needs to > "Premature pessimization is when you write code that is slower than it needs to
be, usually by asking for unnecessary extra work, when equivalently complex code be, usually by asking for unnecessary extra work, when equivalently complex code
would be faster and should just naturally flow out of your fingers." -- Herb Sutter would be faster and should just naturally flow out of your fingers."
>
> -- <cite>Herb Sutter</cite>
Benchmarking as part of CI is hard due to noisy neighbours and even different Benchmarking as part of CI is hard due to noisy neighbours and even different
CI boxes if it's just you. Hard to gate on performance metrics. A good middle CI boxes if it's just you. Hard to gate on performance metrics. A good middle
@ -551,7 +557,7 @@ with a good algorithm. We will talk about this in the hardware-specific
section. section.
> The fight may not always go to the strongest, nor the race to the fastest, > The fight may not always go to the strongest, nor the race to the fastest,
> but that's the way to bet. but that's the way to bet.
> -- <cite>Rudyard Kipling</cite> > -- <cite>Rudyard Kipling</cite>
Sometimes the best algorithm for a particular problem is not a single Sometimes the best algorithm for a particular problem is not a single
@ -1018,7 +1024,7 @@ Popular replacements for standard library packages:
## cgo ## cgo
> cgo is not go > cgo is not go
> -- Rob Pike > -- <cite>Rob Pike</cite>
* Performance characteristics of cgo calls * Performance characteristics of cgo calls
* Tricks to reduce the costs: batching * Tricks to reduce the costs: batching
@ -1201,7 +1207,7 @@ faster.
> The fastest algorithm can frequently be replaced by one that is almost as fast and much easier to understand. > The fastest algorithm can frequently be replaced by one that is almost as fast and much easier to understand.
> >
> Douglas W. Jones, University of Iowa > -- <cite>Douglas W. Jones, University of Iowa</cite>
The added complexity has to be enough that the payoff is actually worth it. The added complexity has to be enough that the payoff is actually worth it.
Another example is cache eviction algorithms. Different algorithms can have Another example is cache eviction algorithms. Different algorithms can have