Blackmagic Disk Speed Test 是一款非常受欢迎的 Mac 硬盘测速工具,它主要用于测试硬盘、SSD 或其他存储设备的读写速度。这款工具因其简洁的界面和准确的测试结果而广泛被视频编辑和数据工作者使用,特别是在需要高性能存储的工作流中(如 4K 视频编辑)。

如何使用 Blackmagic Disk Speed Test:

  1. 下载和安装
    • 你可以从 Mac App Store 免费下载并安装 Blackmagic Disk Speed Test
  2. 打开应用程序
    • 安装完成后,打开 Blackmagic Disk Speed Test
  3. 选择测试驱动器
    • 在应用程序的界面中,你会看到一个“选择目标驱动器”的按钮。点击它来选择你要测试的硬盘或 SSD。
  4. 开始测试
    • 选择好驱动器后,点击大大的“开始”按钮,程序就会开始读取和写入数据,测试硬盘的读写速度。
  5. 查看结果
    • 测试完成后,软件会显示硬盘的 读取速度 和 写入速度,单位是 MB/s。你还可以看到硬盘是否适合用于高性能的任务,比如 4K 视频编辑等。

主要特点:

  • 简单易用:界面简单,用户只需要选择硬盘并开始测试。
  • 实时结果:实时显示硬盘的读写速度,非常直观。
  • 支持多种存储设备:不仅可以测试 Mac 自带的硬盘,还可以测试外接的硬盘、SSD、USB 闪存盘等。
  • 视频编辑优化:对于视频编辑师来说,它能提供快速的测试,帮助选择合适的存储设备。

注意事项:

  • 在进行测试时,确保没有其他程序正在占用硬盘的资源,这样可以获得更准确的结果。
  • 如果你使用的是外部硬盘,连接方式(如 USB 2.0/3.0、Thunderbolt)可能会影响测试结果。

有需要进一步帮助的部分吗?

如果你希望通过代码来测试硬盘的读写速度,可以使用一些命令行工具来实现。在 macOS 上,你可以结合 dd命令来进行类似的测试,或者编写一个简单的程序来进行硬盘测速。

1. 使用 dd 命令进行硬盘测速

dd 是一个非常强大的命令行工具,它可以用来进行低级的硬盘读写操作。通过 dd,你可以测试硬盘的读写速度。

写入速度测试:

dd if=/dev/zero of=~/testfile bs=1m count=1024
  • if=/dev/zero:从空设备 /dev/zero 读取数据(全是零的数据)。
  • of=~/testfile:写入到当前用户目录下的 testfile 文件。
  • bs=1m:块大小为 1MB。
  • count=1024:写入 1024 个块(即 1GB)。

读取速度测试:

dd if=~/testfile of=/dev/null bs=1m
  • if=~/testfile:读取刚才写入的 testfile 文件。
  • of=/dev/null:将读取的数据丢弃,不保存。
  • bs=1m:块大小为 1MB。

示例输出:

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.234 s, 205 MB/s

这意味着硬盘的写入速度为 205 MB/s

2. 使用 Python 进行硬盘测速

如果你想通过 Python 编写更自定义的测试脚本,下面是一个简单的硬盘测速脚本,它会创建一个测试文件并测量写入和读取速度。

import time
import os

def write_speed_test(file_path, file_size_in_mb):
    with open(file_path, 'wb') as f:
        start_time = time.time()
        f.write(os.urandom(file_size_in_mb * 1024 * 1024))  # 写入指定大小的随机数据
        end_time = time.time()
    
    elapsed_time = end_time - start_time
    write_speed = file_size_in_mb / elapsed_time  # 单位: MB/s
    print(f"写入速度: {write_speed:.2f} MB/s")
    return elapsed_time

def read_speed_test(file_path):
    with open(file_path, 'rb') as f:
        start_time = time.time()
        f.read()  # 读取文件内容
        end_time = time.time()
    
    elapsed_time = end_time - start_time
    file_size_in_mb = os.path.getsize(file_path) / (1024 * 1024)
    read_speed = file_size_in_mb / elapsed_time  # 单位: MB/s
    print(f"读取速度: {read_speed:.2f} MB/s")
    return elapsed_time

def run_speed_test():
    test_file_path = 'testfile.bin'
    file_size_in_mb = 1024  # 1GB
    
    # 写入速度测试
    write_time = write_speed_test(test_file_path, file_size_in_mb)
    
    # 读取速度测试
    read_time = read_speed_test(test_file_path)
    
    # 清理测试文件
    os.remove(test_file_path)

if __name__ == "__main__":
    run_speed_test()

解释:

  • 写入速度测试:创建一个指定大小的文件,并写入随机数据,计算写入时间。
  • 读取速度测试:读取刚才创建的文件,计算读取速度。
  • 清理文件:测试完后删除临时文件。

运行结果:

写入速度: 150.32 MB/s
读取速度: 200.47 MB/s

3. 改进版:多线程并行读写测试

如果你想要更复杂的测试,可以通过多线程并行进行读写操作来模拟更真实的工作负载。

import time
import os
import threading

def write_speed_test_thread(file_path, file_size_in_mb, result):
    with open(file_path, 'wb') as f:
        start_time = time.time()
        f.write(os.urandom(file_size_in_mb * 1024 * 1024))  # 写入随机数据
        end_time = time.time()
    
    result['write'] = file_size_in_mb / (end_time - start_time)

def read_speed_test_thread(file_path, result):
    with open(file_path, 'rb') as f:
        start_time = time.time()
        f.read()
        end_time = time.time()
    
    file_size_in_mb = os.path.getsize(file_path) / (1024 * 1024)
    result['read'] = file_size_in_mb / (end_time - start_time)

def run_parallel_speed_test():
    test_file_path = 'testfile.bin'
    file_size_in_mb = 1024  # 1GB
    result = {}

    write_thread = threading.Thread(target=write_speed_test_thread, args=(test_file_path, file_size_in_mb, result))
    read_thread = threading.Thread(target=read_speed_test_thread, args=(test_file_path, result))
    
    write_thread.start()
    read_thread.start()
    
    write_thread.join()
    read_thread.join()

    print(f"写入速度: {result['write']:.2f} MB/s")
    print(f"读取速度: {result['read']:.2f} MB/s")

    # 清理测试文件
    os.remove(test_file_path)

if __name__ == "__main__":
    run_parallel_speed_test()

主要功能:

  • 多线程:同时进行写入和读取速度测试,更接近实际使用情况。
  • 结果输出:写入和读取速度都能并行显示。

以上是几种可以用于硬盘测速的代码实现。如果你有任何其他需求,或者希望进一步改进测试方式,随时告诉我!