Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f2984a4

Browse files
author
Nikos M
committed
update
1 parent 6989419 commit f2984a4

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

‎README.md‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ __Arithmetic Operations__
105105
###Language-independent optimization
106106

107107

108-
* __Re-arranging Expressions__ : More efficient code for the evaluation of an expression (or the computation of a process) can often be produced if the operations occuring in the expression are evaluated in a different order. This works because by re-arranging expression/operations what gets added or multiplied to what gets changed, including the relative number of additions and multiplications, and thus the relative (computational) costs of each operation. In fact, this is not restricted to arithmetic operations, but any operations whatsoever using symmetries of the process/operators and re-arrange to produce same result while having other advantages. That is it, so simple. Classic examples are Horner's Rule <sup> [12] </sup>, Karatsuba Multiplication <sup> [13] </sup>, fast complex multiplication <sup> [14] </sup>, fast matrix multiplication <sup> [15], [16] </sup>, fast exponentiation <sup> [29], [30] </sup>, fast factorials/binomials <sup> [40], [41] </sup>, fast fourier transform <sup> [53] </sup>, sorting by merging <sup> [51] </sup>, sorting by powers <sup> [52] </sup>.
108+
* __Re-arranging Expressions__ : More efficient code for the evaluation of an expression (or the computation of a process) can often be produced if the operations occuring in the expression are evaluated in a different order. This works because by re-arranging expression/operations, what gets added or multiplied to what, gets changed, including the relative number of additions and multiplications, and thus the (overall) relative (computational) costs of each operation. In fact, this is not restricted to arithmetic operations, but any operations whatsoever using symmetries of the process/operators and re-arrange to produce same result while having other advantages. That is it, so simple. Classic examples are Horner's Rule <sup> [12] </sup>, Karatsuba Multiplication <sup> [13] </sup>, fast complex multiplication <sup> [14] </sup>, fast matrix multiplication <sup> [15], [16] </sup>, fast exponentiation <sup> [29], [30] </sup>, fast factorials/binomials <sup> [40], [41] </sup>, fast fourier transform <sup> [53] </sup>, sorting by merging <sup> [51] </sup>, sorting by powers <sup> [52] </sup>.
109109

110110

111111
* __Constant Substitution/Propagation__ : Many times an expression is under all cases evaluated to a single constant, the constant value can be replaced instead of the more complex and slower expression (sometimes compilers do that).
@@ -134,7 +134,8 @@ __Arithmetic Operations__
134134

135135
* __Exploiting Mathematical Theorems/Relations__ : Some times a computation can be performed in an equivalent but more efficient way by using some mathematical theorem, transformation, symmetry <sup> [50] </sup> or knowledge (eg. Gauss method of solving Systems of Linear equations <sup> [54] </sup>, Fast Fourier Transforms <sup> [53] </sup>, Fermat's Little Theorem <sup> [55] </sup>, Taylor-Mclaurin Series Expasions, Trigonometric Identities <sup> [56] </sup>, etc..). This can go a long way. It is good to refresh your mathematical knowledge every now and then.
136136

137-
* __Using Efficient Data Structures__ : Data structures are the counterpart of algorithms (in the space domain), each efficient algorithm needs an associated efficient data structure for the specific task. In many cases using an appropriate data structure (representation) can make all the difference (eg. database designers and search engine developers know this very well) <sup> [27], [28], [49], [58] </sup>
137+
138+
* __Using Efficient Data Structures__ : Data structures are the counterpart of algorithms (in the space domain), each efficient algorithm needs an associated efficient data structure for the specific task. In many cases using an appropriate data structure (representation) can make all the difference (eg. database designers and search engine developers know this very well) <sup> [27], [28], [49], [58], [59], [60] </sup>
138139

139140

140141

@@ -388,6 +389,8 @@ Database Access can be expensive, this means it is usually better to fetch the n
388389
* https://en.wikipedia.org/wiki/Trigonometric_identities
389390
* http://arxiv.org/abs/1102.1523v1
390391
* https://arxiv.org/abs/cs/0011047
392+
* http://soft.vub.ac.be/~madewael/w-JITds/paper.pdf
393+
* http://brandonlucia.com/pubs/approx2014.pdf
391394

392395
[1]: http://en.wikipedia.org/wiki/Code_optimization
393396
[2]: http://en.wikipedia.org/wiki/Don%27t_repeat_yourself
@@ -447,3 +450,5 @@ Database Access can be expensive, this means it is usually better to fetch the n
447450
[56]: https://en.wikipedia.org/wiki/Trigonometric_identities
448451
[57]: http://arxiv.org/abs/1102.1523v1
449452
[58]: https://arxiv.org/abs/cs/0011047
453+
[59]: http://soft.vub.ac.be/~madewael/w-JITds/paper.pdf
454+
[60]: http://brandonlucia.com/pubs/approx2014.pdf

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /