首先我想道歉,如果這個問題已被問到。很難找到沒有找到如何計算散列引用數組的答案如何提高我的域名計數算法的效率?
我的函數接收來自DBI查詢的輸出,這是一個包含電子郵件地址的散列引用數組。其任務是通過他們的域名每天保持電子郵件地址。我所做的是構建域的散列到計數。問題在於陣列預計至少會存儲10,000,000封電子郵件。腳本花了幾分鐘跑完。
問題是,你能想出一種簡化算法的方法嗎?
my ($data) = shift;
my %elements = ();
foreach my $row (@$data)
{
my ($username, $domain) = split(/@/, $row->{addr});
if (exists($elements{$domain}))
{
$elements{$domain}++;
}
else
{
$elements{$domain} = 1;
}
}
順便說一句,我對我的英語很抱歉,但我不是母語的人。謝謝。
您可以添加一個域表並添加域/增加計數器時(使用觸發器?)添加電子郵件,然後你只需要每天查詢該表並清除它。 – zenpoy 2013-02-12 16:51:15
你需要頻繁地這樣做嗎?爲什麼不使用一些NoSQL鍵值存儲來保存地址作爲鍵和計數值呢? – snoofkin 2013-02-12 16:55:54