чтение TXT-файла в хеш Perl - PullRequest
       1

чтение TXT-файла в хеш Perl

0 голосов
/ 03 октября 2011

Hej острые мысли!

Мне нужно загрузить текстовый файл в хэш.Одна строка - это ключ, следующая строка - это значение.И это повторяется несколько миллионов раз.Любые предложения, как это сделать наилучшим образом?

А сколько памяти потребуется хэш-таблице, если, скажем, ключ 15 символов, а значение 50 символов?

Спасибо

1 Ответ

5 голосов
/ 03 октября 2011

Следующий код должен загрузить текстовый файл в хеш:

my %hash;

while (chomp(my $key = <DATA>)) {
    chomp(my $val = <DATA>);
    $hash{$key} = $val;
}

Расход памяти на записи хеша будет зависеть от архитектуры (32 против 64 бит), но должен быть порядка пары сотен байтов для самого хэша, а затем около 30-60 байтов на ключ и значение, плюс накладные расходы типа данных ключа и значения. Вы можете использовать Devel::Size, чтобы проверить это самостоятельно. Также прочитайте это .

Итак, в вашем примере на 64-битной платформе миллион записей должен стоить примерно:

136 для хэша

58 + 15 + 58 + 50 == 181 на пару ключ / значение x 1 000 000

181 МБ для миллиона записей указанных вами размеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...