小能豆

如何使用 timeit 模块

javascript

我该如何使用来比较我自己的函数(例如“ ”和“ ”)timeit的性能?insertion_sorttim_sort


阅读 42

收藏
2024-07-15

共1个答案

小能豆

要使用该模块比较您自己的函数(例如insertion_sort和)的性能,您需要遵循以下步骤:tim_sort``timeit

  1. 定义您的功能:确保您已定义您的insertion_sort功能tim_sort
  2. 创建设置代码:此设置代码将导入必要的功能并生成您想要排序的数据。
  3. 使用timeit.timeit():使用timeit.timeit()您想要计时的代码和设置代码进行呼叫。

以下是一个例子:

Python复制代码import timeit

# Define your sorting functions
def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >= 0 and key < arr[j]:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key
    return arr

def tim_sort(arr):
    return sorted(arr)  # Using Python's built-in Timsort

# Create the setup code
setup_code = """
from __main__ import insertion_sort, tim_sort
import random
arr = [random.randint(0, 1000) for _ in range(1000)]
"""

# Create the test code for insertion_sort
insertion_sort_code = """
arr_copy = arr[:]
insertion_sort(arr_copy)
"""

# Create the test code for tim_sort
tim_sort_code = """
arr_copy = arr[:]
tim_sort(arr_copy)
"""

# Use timeit to measure the performance
insertion_sort_time = timeit.timeit(stmt=insertion_sort_code, setup=setup_code, number=100)
tim_sort_time = timeit.timeit(stmt=tim_sort_code, setup=setup_code, number=100)

print(f"Insertion Sort Time: {insertion_sort_time}")
print(f"Tim Sort Time: {tim_sort_time}")

解释:

  1. 设置代码
  2. from __main__ import insertion_sort, tim_sort:从主脚本导入排序函数。
  3. import random:导入random模块。
  4. arr = [random.randint(0, 1000) for _ in range(1000)]:生成 0 到 1000 之间的 1000 个整数的随机列表。
  5. 测试代码
  6. arr_copy = arr[:]:创建数组的副本以确保原始数组不会被修改。
  7. insertion_sort(arr_copy)insertion_sort使用复制的数组调用函数。
  8. tim_sort(arr_copy)tim_sort使用复制的数组调用函数。
  9. 时间
  10. timeit.timeit():多次执行提供的代码(number=100)并测量所花费的总时间。

insertion_sort通过运行此脚本,您可以比较和函数的性能。根据您的性能要求,根据需要tim_sort调整列表的大小和迭代次数(参数)。number

2024-07-15