Behdad Esfahbod
17b034c904
In curves_to_quadratic(), avoid some more work
...
When a curve fails to convert at a certain n, keep increasing n for
this curve until a fit found. Saves another 7% in the benchmark.
2016-07-29 20:31:38 -07:00
Behdad Esfahbod
06eb980a0c
Split off case of n=1 into its own function
...
Looks like changes like this don't have measurable performance
penalty, but they do help with analyzing profile output to see
which branch (n=1 or n!=1) takes more time.
2016-07-29 20:31:38 -07:00
Behdad Esfahbod
96eb3baa15
Add specialization of split_cubic_into_n() for n=6
...
...by calling split_cubic_into_three() twice. Gives another 5..9%
speedup. The thing is, while higher n values are lower-frequency,
the savings are also bigger. So the two offset out.
2016-07-29 20:31:38 -07:00
Behdad Esfahbod
6d811003ed
Add specialization of split_cubic_into_n() for n=4
...
...by calling split_cubic_into_two() twice. Gives another 5% speedup.
2016-07-29 20:31:38 -07:00
Behdad Esfahbod
44235274cd
Remove variable that was used once.
2016-07-29 20:31:38 -07:00
Behdad Esfahbod
f899c8ccf8
Combine two more loops
...
Another 10% speedup.
2016-07-28 17:37:18 -07:00
Behdad Esfahbod
c5a17bb055
Shuffle code in cubic_approx_spline() a bit
2016-07-28 17:10:49 -07:00
Behdad Esfahbod
b305ef49be
Another micro-optimization
2016-07-28 16:31:30 -07:00
Behdad Esfahbod
40ebe85d9e
Move special-cases of split_cubic_into_n() into it
...
Surprisingly this doesn't seem to slow down, but also slightly
speed up.
2016-07-28 16:25:58 -07:00
Behdad Esfahbod
ede89847a7
Apply review changes from https://github.com/googlei18n/cu2qu/pull/37
2016-07-28 16:12:00 -07:00
Behdad Esfahbod
223450e8d7
Break out of conversion loop early if a curve fails to convert
...
Makes the compatible-conversion about 40% faster.
2016-07-28 14:41:33 -07:00
Behdad Esfahbod
54104319f9
Another theoretical optimization
2016-07-28 13:57:17 -07:00
Behdad Esfahbod
de9b9ba3e1
Reduce code duplication
2016-07-28 13:51:11 -07:00
Behdad Esfahbod
77c913ba61
Add keyword-argument hack for 2/3 as well
2016-07-28 13:44:41 -07:00
James Godfrey-Kittle
d87bbe25fd
Typo
2016-07-28 12:51:08 -07:00
James Godfrey-Kittle
c0b6ed92e3
Update/add some rudimentary comments
2016-07-28 12:32:29 -07:00
James Godfrey-Kittle
f7b9ebba06
Move error classes, dot function to top of file
2016-07-28 12:12:22 -07:00
James Godfrey-Kittle
5db64c55aa
More vertical whitespace
...
Style guide says two blank lines between top level functions.
2016-07-28 12:09:52 -07:00
James Godfrey-Kittle
152baa88a5
No lines over 80 characters
...
This meant going back on my horizontal whitespace around operators
stance, but in this case I think it looks better to reduce whitespace
than to break up the line.
2016-07-28 12:07:44 -07:00
James Godfrey-Kittle
65befad036
Update some comments
2016-07-28 12:03:53 -07:00
James Godfrey-Kittle
8dc57da4ae
Remove unnecessary parentheses
2016-07-28 12:00:13 -07:00
James Godfrey-Kittle
e5cf42545b
Variable names
...
In some cases these changes were made for clarity, in some cases more
just for consistency. Anyways we should now have mostly consistent and
reasonably clear variable names everywhere.
2016-07-28 11:56:14 -07:00
James Godfrey-Kittle
3225b1e249
No camelcase
...
I guess this was done for consistency with names in FontTools, but I
gotta say it was bugging me that some functions in this module used
underscores and some used camelcase. Style guide says underscores.
2016-07-28 11:41:42 -07:00
James Godfrey-Kittle
ccb1a73edd
Factor before variable when no whitespace
...
This is just a consistency thing; see code above change.
2016-07-28 11:37:08 -07:00
James Godfrey-Kittle
746873233b
More whitespace around binary operators
...
This is very subjective, but my preference is more whitespace.
Generally the only place I didn't put in whitespace was for
multiplication within statements that also contained additions,
without parentheses.
2016-07-28 11:35:32 -07:00
James Godfrey-Kittle
847d12180b
Get rid of unnecessary decimal points
...
We import division from __future__, so float division happens by
default.
2016-07-28 11:21:47 -07:00
James Godfrey-Kittle
d864619c8b
Typo
2016-07-27 16:52:19 -07:00
James Godfrey-Kittle
4d72a44d35
Remove unused code
2016-07-27 16:52:09 -07:00
James Godfrey-Kittle
a91108185f
Correct single-segment approximation return
2016-07-27 16:51:45 -07:00
James Godfrey-Kittle
039e35b212
No error returned from API, update tests
2016-07-27 13:21:47 -07:00
Behdad Esfahbod
9a2d4b810a
Reduce more work
2016-07-26 16:00:49 -04:00
Behdad Esfahbod
f6daaae2f8
Port dot() product to native complex operations
...
For reference:
http://www.solitaryroad.com/c606.html
2016-07-26 15:43:38 -04:00
Behdad Esfahbod
efb25578a1
Minor
2016-07-25 04:16:02 -04:00
Behdad Esfahbod
0b91ec8024
Remove unuse exception
2016-07-25 04:14:34 -04:00
Behdad Esfahbod
13cd5c3b09
Some more micro-optimization
2016-07-25 04:08:37 -04:00
Behdad Esfahbod
b9dcbb5668
Do some less work!
2016-07-25 04:00:44 -04:00
Behdad Esfahbod
021d8c107d
Remove unused code
2016-07-25 03:57:33 -04:00
Behdad Esfahbod
59e8ce6e84
Inline cubic_cubic_fit()
...
Results in a few percents speedup.
2016-07-25 03:53:23 -04:00
Behdad Esfahbod
3aa4c1e1e4
Remove unused error code
2016-07-25 03:38:13 -04:00
Behdad Esfahbod
612aa2af87
Return results in tuples, not complex points
2016-07-25 03:35:40 -04:00
Behdad Esfahbod
1cc3c5eae8
Inline _splitCubicIntoN()
2016-07-25 03:14:02 -04:00
Behdad Esfahbod
40bba687ab
Replace splitCubicAtT() with splitCubicIntoN()
...
Another 6% speedup.
2016-07-25 03:13:01 -04:00
Behdad Esfahbod
64af3ad4a8
Inline cubic_quadratic_fit()
...
Another 5%.
2016-07-25 03:04:51 -04:00
Behdad Esfahbod
abc18236af
Inline splitCubicIntoTwo()
...
Saves another 5%.
2016-07-25 02:12:15 -04:00
Behdad Esfahbod
c50d498ea5
Hand-code splitCubicIntoThree()
2016-07-24 14:10:41 -04:00
Behdad Esfahbod
8a13ef1edf
Use splitCubicIntoTwo() more
...
Shaves another 5%.
2016-07-24 13:54:52 -04:00
Behdad Esfahbod
dff2cd8669
Add splitCubicIntoTwo()
...
Speeds up another 15% or so.
2016-07-24 13:54:52 -04:00
Behdad Esfahbod
12629a715b
Whitespace
2016-07-23 17:11:45 -07:00
Behdad Esfahbod
f63a31dd99
Do less work.
2016-07-23 17:11:28 -07:00
Behdad Esfahbod
d3f566ba54
Use complex numbers to implement points
...
Shows a 30% speedup for me.
2016-07-22 23:40:44 -07:00