J. Nick Koston 92106d2a4d [core] Eliminate __udivdi3 in millis() on ESP32 and RP2040
On 32-bit targets, GCC does not optimize 64-bit constant division
into a multiply-by-reciprocal and instead calls __udivdi3 (software
64-bit divide). This replaces the division with Euclidean
decomposition using a single 32-bit divide that GCC optimizes into
a multiply-by-reciprocal.

Benchmarked on ESP32 classic (Xtensa LX6, 240 MHz):
  __udivdi3: 628-705 ns
  fast_div1000_32: 269-279 ns (2.3-2.6x faster)

millis() is called ~21 times per main loop iteration. At ~350 ns
savings per call, this saves ~7 us per loop iteration.
2026-03-01 22:53:27 -10:00
2023-06-12 17:00:34 +12:00
2022-09-06 15:48:01 +12:00
2025-12-21 09:26:03 -05:00
2024-03-28 10:20:51 +13:00
2025-07-17 22:40:28 +12:00
2025-12-08 14:37:45 -05:00
2026-02-12 23:04:19 +13:00
2025-07-17 22:40:28 +12:00
2026-02-11 22:11:48 -05:00
2025-12-05 08:48:04 -05:00
S
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
582 MiB
Languages
C++ 56%
Python 43.4%
C 0.3%
JavaScript 0.2%