处理时间

-2 perl computation-theory

为什么以下脚本需要这么多周期才能完成?

正在筛选的文件长20590行,每行包括以下内容或其变体; "10160354001 ALGIERS ALGERIA 36.70 3.60 290"

我正在尝试建立一个数据库,以匹配第一个数字到最后一个3.

然而,实际程序每行需要几秒钟.

脚本:

#! /usr/bin/perl

$path = shift(@ARGV);

open COORDS, $path or die "Couldn't open file\n";

my %coords = {};

foreach $line (<COORDS>){
    $stat = substr $line,0,11;
    @coords = grep(($_!=undef),split(/ /,substr $line,42));
    $coords[$stat]=@coords;
}

print $coords['10160354001'];

close(COORDS);
Run Code Online (Sandbox Code Playgroud)

mob*_*mob 5

$coords['10160354001'] = ...是一个数组元素的赋值,一个大数组元素.此语句将导致Perl为至少10160354002个元素分配一个具有空间的数组.

你打算使用哈希:

$coords{$stat} = "@coords";
...
print $coords{'10160354001'};
Run Code Online (Sandbox Code Playgroud)

use strict并且use warnings会提醒您使用代码中的此问题和其他问题.