[Rio-pm] [DUVIDA] Array muito longo
Ola, monges. Gostaria de saber quais opções eu tenho para gravar um numero muito grande de informações em um array. Exemplo, imagine que eu tenha uma rotina tosca como essa: sub multiplicador{ my @ini = (100..999);my $fim = 999;my @memo while ($fim != 100){foreach (@ini){my $m = $_ * $fim; push (@memo, $m);}$fim--;}} Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 * 999 ate 999*999.Os resultados de cada multiplicação são jogados para um array. Ou seja, um array grande pra caramba. Como faria para que @memo fosse capaz de guardar todos os valores? Qual é o limite de dados que posso normalmente guardar em um array? Obrigado, ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
Acho que isso depende do sistema operacional. Por exemplo se vc tem overcommit desligado o malloc (usado internamente pelo interpretador) nunca vai dar falta de memória é provavelmente vc vai fazer swap de memória em disco. Se vc tem menos memória que o necessário tens que pensar em alternativas como salvar em disco, banco de dados, etc. Se o resultado é previsível e imutável talvez vc poderia substituir o array por uma função + cache. Mas testa primeiro na sua máquina e vê o que dá. Em 15/04/2014 13:33, "Aureliano Guedes" escreveu: > Ola, monges. > > Gostaria de saber quais opções eu tenho para gravar um numero muito grande > de informações em um array. > > Exemplo, imagine que eu tenha uma rotina tosca como essa: > > sub multiplicador{ > my @ini = (100..999); > my $fim = 999; > my @memo > while ($fim != 100){ > foreach (@ini){ > my $m = $_ * $fim; > push (@memo, $m); > } > $fim--; > } > } > > Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 * > 999 ate 999*999. > Os resultados de cada multiplicação são jogados para um array. Ou seja, um > array grande pra caramba. > > Como faria para que @memo fosse capaz de guardar todos os valores? > > Qual é o limite de dados que posso normalmente guardar em um array? > > Obrigado, > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
Memória RAM é o limite. Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > Ola, monges. > > Gostaria de saber quais opções eu tenho para gravar um numero muito grande > de informações em um array. > > Exemplo, imagine que eu tenha uma rotina tosca como essa: > > sub multiplicador{ > my @ini = (100..999); > my $fim = 999; > my @memo > while ($fim != 100){ > foreach (@ini){ > my $m = $_ * $fim; > push (@memo, $m); > } > $fim--; > } > } > > Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 * > 999 ate 999*999. > Os resultados de cada multiplicação são jogados para um array. Ou seja, um > array grande pra caramba. > > Como faria para que @memo fosse capaz de guardar todos os valores? > > Qual é o limite de dados que posso normalmente guardar em um array? > > Obrigado, > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
RAM não necessariamente é RAM física. Conta SWAP e isso degrada performance pq é IO em disco. Em 15/04/2014 13:46, "Stanislaw Pusep" escreveu: > Memória RAM é o limite. > Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: > https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays > > > 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > >> Ola, monges. >> >> Gostaria de saber quais opções eu tenho para gravar um numero muito >> grande de informações em um array. >> >> Exemplo, imagine que eu tenha uma rotina tosca como essa: >> >> sub multiplicador{ >> my @ini = (100..999); >> my $fim = 999; >> my @memo >> while ($fim != 100){ >> foreach (@ini){ >> my $m = $_ * $fim; >> push (@memo, $m); >> } >> $fim--; >> } >> } >> >> Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 >> * 999 ate 999*999. >> Os resultados de cada multiplicação são jogados para um array. Ou seja, >> um array grande pra caramba. >> >> Como faria para que @memo fosse capaz de guardar todos os valores? >> >> Qual é o limite de dados que posso normalmente guardar em um array? >> >> Obrigado, >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
Então. Eu queria evitar IO para nao perder em performance. Se eu usar um banco de dados ou cache nao sera um tipo de IO? Tiago Peczenyj escreveu: RAM não necessariamente é RAM física. Conta SWAP e isso degrada performance pq é IO em disco. Em 15/04/2014 13:46, "Stanislaw Pusep" escreveu: > Memória RAM é o limite. > Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: > https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays > > > 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > >> Ola, monges. >> >> Gostaria de saber quais opções eu tenho para gravar um numero muito >> grande de informações em um array. >> >> Exemplo, imagine que eu tenha uma rotina tosca como essa: >> >> sub multiplicador{ >> my @ini = (100..999); >> my $fim = 999; >> my @memo >> while ($fim != 100){ >> foreach (@ini){ >> my $m = $_ * $fim; >> push (@memo, $m); >> } >> $fim--; >> } >> } >> >> Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 >> * 999 ate 999*999. >> Os resultados de cada multiplicação são jogados para um array. Ou seja, >> um array grande pra caramba. >> >> Como faria para que @memo fosse capaz de guardar todos os valores? >> >> Qual é o limite de dados que posso normalmente guardar em um array? >> >> Obrigado, >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm >> > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
Sim, mas ai você passa o Devel::NYTProf e estuda os gargalos, reduzido o IO ao máximo SE vc precisar. Em 15/04/2014 13:59, "Aureliano Guedes" escreveu: > Então. Eu queria evitar IO para nao perder em performance. > Se eu usar um banco de dados ou cache nao sera um tipo de IO? > > Tiago Peczenyj escreveu: > > RAM não necessariamente é RAM física. Conta SWAP e isso degrada > performance pq é IO em disco. > Em 15/04/2014 13:46, "Stanislaw Pusep" escreveu: > > Memória RAM é o limite. > Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: > https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays > > > 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > > Ola, monges. > > Gostaria de saber quais opções eu tenho para gravar um numero muito > grande de informações em um array. > > Exemplo, imagine que eu tenha uma rotina tosca como essa: > > sub multiplicador{ > my @ini = (100..999); > my $fim = 999; > my @memo > while ($fim != 100){ > foreach (@ini){ > my $m = $_ * $fim; > push (@memo, $m); > } > $fim--; > } > } > > Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 > * 999 ate 999*999. > Os resultados de cada multiplicação são jogados para um array. Ou seja, um > array grande pra caramba. > > Como faria para que @memo fosse capaz de guardar todos os valores? > > Qual é o limite de dados que posso normalmente guardar em um array? > > Obrigado, > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
Entendi. Obrigado. Tiago Peczenyj escreveu: Sim, mas ai você passa o Devel::NYTProf e estuda os gargalos, reduzido o IO ao máximo SE vc precisar. Em 15/04/2014 13:59, "Aureliano Guedes" escreveu: > Então. Eu queria evitar IO para nao perder em performance. > Se eu usar um banco de dados ou cache nao sera um tipo de IO? > > Tiago Peczenyj escreveu: > > RAM não necessariamente é RAM física. Conta SWAP e isso degrada > performance pq é IO em disco. > Em 15/04/2014 13:46, "Stanislaw Pusep" escreveu: > > Memória RAM é o limite. > Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: > https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays > > > 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > > Ola, monges. > > Gostaria de saber quais opções eu tenho para gravar um numero muito > grande de informações em um array. > > Exemplo, imagine que eu tenha uma rotina tosca como essa: > > sub multiplicador{ > my @ini = (100..999); > my $fim = 999; > my @memo > while ($fim != 100){ > foreach (@ini){ > my $m = $_ * $fim; > push (@memo, $m); > } > $fim--; > } > } > > Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 > * 999 ate 999*999. > Os resultados de cada multiplicação são jogados para um array. Ou seja, um > array grande pra caramba. > > Como faria para que @memo fosse capaz de guardar todos os valores? > > Qual é o limite de dados que posso normalmente guardar em um array? > > Obrigado, > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
vc testou ao menos: https://gist.github.com/peczenyj/10749501 aqui rodou de boa e consumiu quase nada 2014-04-15 14:03 GMT-03:00 Aureliano Guedes : > Entendi. Obrigado. > > Tiago Peczenyj escreveu: > > Sim, mas ai você passa o Devel::NYTProf e estuda os gargalos, reduzido o > IO ao máximo SE vc precisar. > Em 15/04/2014 13:59, "Aureliano Guedes" > escreveu: > > Então. Eu queria evitar IO para nao perder em performance. > Se eu usar um banco de dados ou cache nao sera um tipo de IO? > > Tiago Peczenyj escreveu: > > RAM não necessariamente é RAM física. Conta SWAP e isso degrada > performance pq é IO em disco. > Em 15/04/2014 13:46, "Stanislaw Pusep" escreveu: > > Memória RAM é o limite. > Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: > https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays > > > 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > > Ola, monges. > > Gostaria de saber quais opções eu tenho para gravar um numero muito > grande de informações em um array. > > Exemplo, imagine que eu tenha uma rotina tosca como essa: > > sub multiplicador{ > my @ini = (100..999); > my $fim = 999; > my @memo > while ($fim != 100){ > foreach (@ini){ > my $m = $_ * $fim; > push (@memo, $m); > } > $fim--; > } > } > > Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 > * 999 ate 999*999. > Os resultados de cada multiplicação são jogados para um array. Ou seja, um > array grande pra caramba. > > Como faria para que @memo fosse capaz de guardar todos os valores? > > Qual é o limite de dados que posso normalmente guardar em um array? > > Obrigado, > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] [DUVIDA] Array muito longo
Tentei. Mas o pc que tava usando era um AMD Athon 1.6GHz 2gb RAM de 2007 forcadamente estrupado por um Windows 8.1 (Deus sabe porque fizeram isso). Depois tentei nesse servidor http://www.compileonline.com/execute_perl_online.php Tiago Peczenyj escreveu: vc testou ao menos: https://gist.github.com/peczenyj/10749501 aqui rodou de boa e consumiu quase nada 2014-04-15 14:03 GMT-03:00 Aureliano Guedes : > Entendi. Obrigado. > > Tiago Peczenyj escreveu: > > Sim, mas ai você passa o Devel::NYTProf e estuda os gargalos, reduzido o > IO ao máximo SE vc precisar. > Em 15/04/2014 13:59, "Aureliano Guedes" > escreveu: > > Então. Eu queria evitar IO para nao perder em performance. > Se eu usar um banco de dados ou cache nao sera um tipo de IO? > > Tiago Peczenyj escreveu: > > RAM não necessariamente é RAM física. Conta SWAP e isso degrada > performance pq é IO em disco. > Em 15/04/2014 13:46, "Stanislaw Pusep" escreveu: > > Memória RAM é o limite. > Vc pode usar o DBM::Deep, aí o seu storage será o limite. Mas cuidado: > https://metacpan.org/pod/distribution/DBM-Deep/lib/DBM/Deep.pod#Large-Arrays > > > 2014-04-15 18:33 GMT+02:00 Aureliano Guedes : > > Ola, monges. > > Gostaria de saber quais opções eu tenho para gravar um numero muito > grande de informações em um array. > > Exemplo, imagine que eu tenha uma rotina tosca como essa: > > sub multiplicador{ > my @ini = (100..999); > my $fim = 999; > my @memo > while ($fim != 100){ > foreach (@ini){ > my $m = $_ * $fim; > push (@memo, $m); > } > $fim--; > } > } > > Essa rotina multiplica 100 * 100 ... 100 * 999, depois 101 * 100 ... 101 > * 999 ate 999*999. > Os resultados de cada multiplicação são jogados para um array. Ou seja, um > array grande pra caramba. > > Como faria para que @memo fosse capaz de guardar todos os valores? > > Qual é o limite de dados que posso normalmente guardar em um array? > > Obrigado, > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm