summaryrefslogtreecommitdiff
path: root/README.benchmark.md
diff options
context:
space:
mode:
authorEugeniy E. Mikhailov <evgmik@gmail.com>2021-06-11 12:01:13 -0400
committerEugeniy E. Mikhailov <evgmik@gmail.com>2021-06-11 12:01:13 -0400
commit48435e643bee9b85451e1a4199e8c45ad379693f (patch)
tree1fa28fc7463f5b4eece30d60d4e9cab62dca5261 /README.benchmark.md
parenta87dc7485971275d9fdc92fc7e006e048fddae72 (diff)
downloadnodeMCU_rf_source_lmx2487-48435e643bee9b85451e1a4199e8c45ad379693f.tar.gz
nodeMCU_rf_source_lmx2487-48435e643bee9b85451e1a4199e8c45ad379693f.zip
added benchmarking improvement progress
Diffstat (limited to 'README.benchmark.md')
-rw-r--r--README.benchmark.md67
1 files changed, 67 insertions, 0 deletions
diff --git a/README.benchmark.md b/README.benchmark.md
new file mode 100644
index 0000000..808828d
--- /dev/null
+++ b/README.benchmark.md
@@ -0,0 +1,67 @@
+# Benchmark improvement progress
+
+## The initial benchmark timing based on v1.0-home-cooked-binary
+
+~~~~
+===== Execution time benchmark ======
+ 7.5 uS empty function
+ 10983.6 uS toBits(4000000)
+ 332.0 uS toNum
+ 336.2 uS freq2regestersValues
+ 96886.3 uS copySettings
+ 37.2 uS pad2NumBitsInPlace
+ 8796.9 uS bitSlice
+229184.0 uS FreqToSettings
+~~~~
+
+## Skipping settings clone in FreqToSettings
+
+Skipping the setting cloning via copySettings in FreqToSettings
+shaved about 100 uS out of initial 230 uS. It is ok
+to affect global workplace for settings since it is used
+everywhere anyway.
+
+~~~~
+===== Execution time benchmark ======
+ 7.5 uS empty function
+ 2785.8 uS empty table creation
+ 4153.9 uS table expand by 1 element
+ 5536.3 uS table expand by 2 element
+ 146.1 uS bit.rshift(4000000,1)
+ 10686.6 uS toBits(4000000)
+ 331.9 uS toNum
+ 333.4 uS freq2regestersValues
+ 94721.6 uS copySettings
+ 37.1 uS pad2NumBitsInPlace
+ 8567.5 uS bitSlice
+123669.0 uS FreqToSettings <-- changed
+~~~~
+
+
+## toBits improvement with bitwise operation failed
+
+Attempt to use bitmask and bitshifts instead of calculating
+reminder of division by 2 was unsuccessful. It increased
+execution time from 10mS to about 15mS. I am guessing
+that calling a function is longer then do division.
+Binary representation table creation and expansion still
+takes most of the time.
+
+## Skipping table binary representation and working with bits directly
+
+I abandoned a cleaner bits in tables approach, and use binary representation
+of masks and appropriate bits from calculated settings. The code is much
+harder to read but speed up of about 40 times totally worse it.
+
+~~~~
+> dofile("bench_lmx2487.lua")
+===== Execution time benchmark ======
+ 8.2 uS empty function
+ 2534.5 uS empty table creation
+ 3768.0 uS table expand by 1 element
+ 5032.4 uS table expand by 2 element
+ 130.8 uS bit.rshift(4000000,1)
+ 336.0 uS freq2regestersValues
+ 2840.7 uS FreqToSettings <-- changed
+ 5047.9 uS setFreq
+~~~~