33253a4baa6279f81a73425b49dfb6abe5f5416e |
|
01-Oct-2014 |
Neil Fuller <nfuller@google.com> |
Switch from FloatMath -> Math and Math.hypot where possible The motivation is an API change: FloatMath is going to be deprecated and/or removed. Performance is not the goal of this change. That said... Math is faster than FloatMath with AOT compilation. While making the change, occurances of: {Float}Math.sqrt(x * x + y * y) and {Float}Math.sqrt({Float}Math.pow(x, 2) + {Float}Math.pow(y, 2)) have been replaced with: {(float)} Math.hypot(x, y) Right now there is no runtime intrinsic for hypot so is not faster in all cases for AOT compilation: Math.sqrt(x * x + y * y) is faster than Math.hypot(x, y) with AOT, but all other combinations of FloatMath, use of pow() etc. are slower than hypot(). hypot() has the advantage of being self documenting and could be optimized in future. None of the behavior differences around NaN and rounding appear to be important for the cases looked at: they all assume results and arguments are in range and usually the results are cast to float. Different implementations measured on hammerhead / L: AOT compiled: [FloatMath.hypot(x, y)] benchmark=Hypot_FloatMathHypot} 633.85 ns; σ=0.32 ns @ 3 trials [FloatMath.sqrt(x*x + y*y)] benchmark=Hypot_FloatMathSqrtMult} 684.17 ns; σ=4.83 ns @ 3 trials [FloatMath.sqrt(FloatMath.pow(x, 2) + FloatMath.pow(y, 2))] benchmark=Hypot_FloatMathSqrtPow} 1270.65 ns; σ=12.20 ns @ 6 trials [(float) Math.hypot(x, y)] benchmark=Hypot_MathHypot} 96.80 ns; σ=0.05 ns @ 3 trials [(float) Math.sqrt(x*x + y*y)] benchmark=Hypot_MathSqrtMult} 23.97 ns; σ=0.01 ns @ 3 trials [(float) Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))] benchmark=Hypot_MathSqrtPow} 156.19 ns; σ=0.12 ns @ 3 trials Interpreter: benchmark=Hypot_FloatMathHypot} 1180.54 ns; σ=5.13 ns @ 3 trials benchmark=Hypot_FloatMathSqrtMult} 1121.05 ns; σ=3.80 ns @ 3 trials benchmark=Hypot_FloatMathSqrtPow} 3327.14 ns; σ=7.33 ns @ 3 trials benchmark=Hypot_MathHypot} 856.57 ns; σ=1.41 ns @ 3 trials benchmark=Hypot_MathSqrtMult} 1028.92 ns; σ=9.11 ns @ 3 trials benchmark=Hypot_MathSqrtPow} 2539.47 ns; σ=24.44 ns @ 3 trials Bug: https://code.google.com/p/android/issues/detail?id=36199 Change-Id: I06c91f682095e627cb547d60d936ef87941be692
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
|
c82618c660bbb76df05c11c548cc01724f5e5fc9 |
|
03-Dec-2013 |
Michael Jurka <mikejurka@google.com> |
[DO NOT MERGE] Fix wallpaper cropping bugs - take into account that image decoder might not respect inSampleSize - check rounded values so we don't have crop rects that lie outside a bitmap's dimensions - correctly set initial scale on bitmaps that are larger than the screen size - switch to using asynctask when setting wallpaper dimensions (cherry picked from commit e39c9a953ca11319b747b3aa79f4ccd082b775b7) Change-Id: I43372f0bff37f139c8bc83f9956a967d0b4a8708
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
|
69784065ea78550944b7eddb559c0dac952e20e8 |
|
14-Oct-2013 |
Michael Jurka <mikejurka@google.com> |
Add EXIF rotation support to system wallpaper cropper Bug: 11137824
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
|
e72aa7f0a64ff55f747751b7972ccb8acebab7da |
|
08-Oct-2013 |
Michael Jurka <mikejurka@google.com> |
Fix crash in built-in wallpaper cropper Also, sync to latest version of WallpaperCropActivity Bug: 10950237
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
|
e8d1bf7a439450b9979701909164a6baffbe8bae |
|
09-Sep-2013 |
Michael Jurka <mikejurka@google.com> |
Add new intent/method for cropping and setting wallpapers Also, create a system fallback WallpaperCropper Bug: 4225598 Change-Id: I6bc6d5a3bb3df1dc00f3db701978aa172020c568
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
|