Python 条件字符串格式和常规if/else哪个更快?

Python 条件字符串格式和常规if/else哪个更快?,python,performance,string-formatting,processing-efficiency,Python,Performance,String Formatting,Processing Efficiency,方法1-常规if/else: 方法2-条件字符串格式: 这两个代码段都用于计算特定字符在句子中出现的次数。这两种方法的区别在于for语句内部的部分-条件字符串格式或常规的if/else。我正在试图找出哪种方法更有效。因为两者在算法上没有区别,所以回答这个问题的唯一方法就是测试它 当然,很难对包含输入的程序进行基准测试,所以首先我计算了输入所需句子的时间,然后用一个常量赋值和一个时间来代替。sleep7.8 两个版本都用了不到8秒的时间。7.8秒以外的大部分时间都花在印刷上 但是,根据%timei

方法1-常规if/else:

方法2-条件字符串格式:


这两个代码段都用于计算特定字符在句子中出现的次数。这两种方法的区别在于for语句内部的部分-条件字符串格式或常规的if/else。我正在试图找出哪种方法更有效。

因为两者在算法上没有区别,所以回答这个问题的唯一方法就是测试它

当然,很难对包含输入的程序进行基准测试,所以首先我计算了输入所需句子的时间,然后用一个常量赋值和一个时间来代替。sleep7.8

两个版本都用了不到8秒的时间。7.8秒以外的大部分时间都花在印刷上

但是,根据%timeit,版本1比版本2快约0.0005秒,加速比约为0.006%

顺便说一下,比起从str.format更改为%,您可以获得更高的加速比

我很确定几乎所有的区别都归结为str.format有更多的参数,而不是if语句和if表达式之间的区别


但当然,细节可能取决于您选择的Python实现,也可能取决于您的版本和平台,取决于您提供的输入字符串,最重要的是,您的输入速度。因此,如果这0.006%的差异实际上对某些事情很重要,那么您真的需要自己进行测试。

性能差异几乎肯定会非常小,与您的程序正在做的其他事情相比并不重要。但是如果您确实需要知道,可以使用timeit模块或IPython/Jupyter中的%timeit magic命令来测量它。
from collections import Counter

sentence = Counter(input("What would you like to say? ").lower())
sentence_length = 0

for k, v in sentence.items():
    if v > 1:
        print("There are {} {}'s in this sentence.".format(v, k))
    else:
        print("There is {} {} in this sentence.".format(v, k))
    sentence_length += v

print("There are {} words, including spaces, in total.".format(sentence_length))
from collections import Counter

sentence = Counter(input("What would you like to say? ").lower())
sentence_length = 0

for k, v in sentence.items():
    print("There {} {} {}{} in this sentence.".format(("are" if v > 1 else "is"), v, k, ("'s" if v > 1 else "")))
    sentence_length += v

print("There are {} words, including spaces, in total.".format(sentence_length))