當前位置: 首頁> 最新文章列表> 使用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 應用中一個值得信賴的利器。