[Rio-pm] [DUVIDA] Array muito longo

2014-04-15 Por tôpico 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

Re: [Rio-pm] [DUVIDA] Array muito longo

2014-04-15 Por tôpico Tiago Peczenyj
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 guedes_1...@hotmail.com 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

2014-04-15 Por tôpico Stanislaw Pusep
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 guedes_1...@hotmail.com:

 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

2014-04-15 Por tôpico Tiago Peczenyj
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 creakt...@gmail.com 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 guedes_1...@hotmail.com:

 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

2014-04-15 Por tôpico Aureliano Guedes
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 tiago.pecze...@gmail.com 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 creakt...@gmail.com 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 guedes_1...@hotmail.com:

 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

2014-04-15 Por tôpico Tiago Peczenyj
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 guedes_1...@hotmail.com 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 tiago.pecze...@gmail.com 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 creakt...@gmail.com 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 guedes_1...@hotmail.com:

  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

2014-04-15 Por tôpico Aureliano Guedes
Entendi. Obrigado.

Tiago Peczenyj tiago.pecze...@gmail.com 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 guedes_1...@hotmail.com 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 tiago.pecze...@gmail.com 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 creakt...@gmail.com 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 guedes_1...@hotmail.com:

  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

2014-04-15 Por tôpico Tiago Peczenyj
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 guedes_1...@hotmail.com:

  Entendi. Obrigado.

 Tiago Peczenyj tiago.pecze...@gmail.com 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 guedes_1...@hotmail.com
 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 tiago.pecze...@gmail.com 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 creakt...@gmail.com 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 guedes_1...@hotmail.com:

  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

2014-04-15 Por tôpico Aureliano Guedes
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 tiago.pecze...@gmail.com 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 guedes_1...@hotmail.com:

  Entendi. Obrigado.

 Tiago Peczenyj tiago.pecze...@gmail.com 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 guedes_1...@hotmail.com
 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 tiago.pecze...@gmail.com 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 creakt...@gmail.com 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 guedes_1...@hotmail.com:

  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