Faster Argmin on Floats
8 months ago
- #performance
- #floating-point
- #optimization
- 问题:在一个大型数组中找出最小浮点数的索引,所有值均为正数或+0,非无穷大且非NaN。
- 第一种解决方案:使用`total_cmp`进行比较,处理一百万个数字耗时约511微秒。
- 第二种解决方案:通过自然偏序实现自定义比较器,耗时约489微秒。
- 第三种解决方案:使用`partial_cmp`并直接解包,稍快一些,约470微秒。
- 第四种解决方案:通过比较`u32`位模式利用浮点数表示特性,最快仅需370微秒(提速30%)。
- 提供基准测试程序以对比各方案性能。