You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Python线性搜索程序的FLOPS?相关疑问求解

线性搜索程序的FLOPS计算疑问与解答

问题代码

import numpy as np

a, item = [2.6778716682529704, 8.224004328108661, 8.819020166860604, 25.04500044837642, 
114.6788167136755, 147.21744952331062, 109.1213882924877, 123.36405515780437, 10.113059020720906, 
59.01217380179232, 97.07159649653909, 9.010298414811622, 18.749094869496762, 75.27074394937102, 
85.75441597903486, 67.06650469807076, 59.193039503175825, 53.617565239895384, 13.945783254008596, 
130.41570895088282, 47.71407473246193, 51.903813982574384, 102.21910956684476, 106.99206485108651, 
80.95491815609066, 128.1883746500615, 29.40146119124661, 36.67058053312906, 124.22796860099373, 
46.14312646522846, 88.17789802786112, 10.952449565320403, 109.91937529687375, 124.20305335555281, 
12.389516472883905, 123.44886155581098, 17.421503974572637, 56.70857063455636, 71.00168946472502, 
103.07336370249966, 133.12218972160733, 88.57270183072094, 62.44720049852278, 19.689835681780934, 
57.274235858675404, 11.4949075513903, 32.06572223098081, 16.85725643503054, 147.75304767222545, 
73.03273121662845], 73.03273121662845

# 需计算下方for循环的FLOPS
for i in range(50):
    if a[i] == item:
        print("item found")

用户疑问

  • 该程序仅包含浮点数比较操作(==),无加减乘除等基础浮点运算,是否应为其定义FLOPS?
  • 若FLOPS可定义,上述for循环的FLOPS数值应为多少?

用户尝试在PyPI查找可计算该程序FLOPS的Python包,但未找到合适工具,寻求解决方案。


解答

1. 浮点数比较是否属于FLOPS统计范畴?

FLOPS(每秒浮点运算次数)的通用定义仅覆盖浮点加减乘除这类算术运算,浮点数比较是逻辑判断操作,不属于传统FLOPS的统计范畴。如果是自定义的统计需求,可以自行扩展定义,但这不符合行业通用标准。

2. 若自定义统计,该循环的操作次数

如果硬要把浮点数比较算作一次"浮点操作",需分两种场景:

  • 最坏情况(目标元素在最后一位或不存在):循环执行50次,对应50次浮点数比较
  • 最好情况(目标元素在第一位):仅执行1次比较就退出循环,对应1次浮点数比较
    再次强调,这不是标准的FLOPS统计方式。

自定义统计方案

PyPI上的主流FLOPS工具都是针对标准浮点算术运算设计的,不会统计比较操作。如果需要统计这类操作,最简单的方式是手动计数,修改代码如下:

import numpy as np

a, item = [2.6778716682529704, 8.224004328108661, 8.819020166860604, 25.04500044837642, 
114.6788167136755, 147.21744952331062, 109.1213882924877, 123.36405515780437, 10.113059020720906, 
59.01217380179232, 97.07159649653909, 9.010298414811622, 18.749094869496762, 75.27074394937102, 
85.75441597903486, 67.06650469807076, 59.193039503175825, 53.617565239895384, 13.945783254008596, 
130.41570895088282, 47.71407473246193, 51.903813982574384, 102.21910956684476, 106.99206485108651, 
80.95491815609066, 128.1883746500615, 29.40146119124661, 36.67058053312906, 124.22796860099373, 
46.14312646522846, 88.17789802786112, 10.952449565320403, 109.91937529687375, 124.20305335555281, 
12.389516472883905, 123.44886155581098, 17.421503974572637, 56.70857063455636, 71.00168946472502, 
103.07336370249966, 133.12218972160733, 88.57270183072094, 62.44720049852278, 19.689835681780934, 
57.274235858675404, 11.4949075513903, 32.06572223098081, 16.85725643503054, 147.75304767222545, 
73.03273121662845], 73.03273121662845

count = 0
found = False
for i in range(50):
    count += 1
    if a[i] == item:
        found = True
        print("item found")
        break
print(f"执行的浮点比较次数: {count}")

内容的提问来源于stack exchange,提问作者Andy s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:55:02