mirror of
https://github.com/esphome/esphome.git
synced 2026-09-15 09:08:41 +00:00
0dc56d7a4dd303985f8ba7dcb3bec1b1f1c065a5
On 32-bit targets GCC does not optimize 64-bit constant division into a multiply-by-reciprocal, emitting a call to __udivdi3 instead (~650-710 ns on Xtensa @ 240 MHz). Add micros_to_millis() which exploits 1000 = 8 * 125: a free right-shift by 3 followed by Euclidean decomposition with D=125, reducing the 64-bit division to a single 32-bit / 125U that GCC compiles to a multiply-by-reciprocal. Benchmarked at 258 ns per call on ESP32 classic — a 2.5-2.8x speedup. With ~21 millis() calls per loop iteration this saves ~9 us per loop.
Description
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
Readme
Multiple Licenses
594 MiB
Languages
C++
55.8%
Python
43.6%
C
0.3%
JavaScript
0.2%
