2013-08-23 1 views
0

배열에 가능한 모든 순열을 나열하는 스크립트가 있습니다.이 스크립트는 단어 목록 대신 사용할 수 있습니다. 이것이 작동하게되면, 시도에 한계가 있지 않으면 결국 히트를 얻지 못할 것입니다.내 스크립트가 너무 많은 메모리를 사용하지 않도록 하시겠습니까?

어쨌든, 스크립트는 분명히 메모리의 거대한 양, 불에 모든 서버를 설정합니다 뭔가를합니다. 내가 도움이 필요한 것은 메모리 사용을 퍼뜨리는 방법을 찾는 것입니다. 어떻게 든 스크립트를 재설정하고 세션을 사용하여 다른 파일이나 다른 것으로 이동하여 중단 한 부분에서 계속할 수 있습니다. 나는 단서가 없다. 여기

는 내가 지금까지있어 무엇 :

<?php 
ini_set('memory_limit', '-1'); 
ini_set('max_execution_time', '0'); 

$possible = "abcdefghi"; 

$input = "$possible"; 

function string_getpermutations($prefix, $characters, &$permutations) 
{ 
    if (count($characters) == 1) 
     $permutations[] = $prefix . array_pop($characters); 
    else 
    { 
     for ($i = 0; $i < count($characters); $i++) 
     { 
      $tmp = $characters; 
      unset($tmp[$i]); 

      string_getpermutations($prefix . $characters[$i], array_values($tmp), $permutations); 
     } 
    } 
} 
$characters = array(); 
for ($i = 0; $i < strlen($input); $i++) 
    $characters[] = $input[$i]; 
$permutations = array(); 

print_r($characters); 
string_getpermutations("", $characters, $permutations); 

print_r($permutations); 

?> 

어떤 아이디어? : 3

답변

0

당신은/표시 당신의 순열을 사용하는 올바른 순서로 필요할 때마다 XXX 순열은 다음 파일을 다시 파일의 순열을 저장할 수 있습니다. (파일 또는 당신이 무엇을만큼 당신이 페소 메모리를 확보 할 수 있습니다로, 원하는)

나는 그냥 순열을 반향하고 있음을 볼 수 있지만, 어쩌면 당신이 그것으로 다른 일을 할 것입니까? 그래서 그것은 어떻게 든 달라집니다. 당신의 순열을하는 동안

또한, 가능한 한 빨리 많은 사용되지 않은 변수로 설정 해제하려고합니다.

편집 : 때로 순열 배열에 대한 참조를 사용하면 메모리를 더 많이 사용할 수 있습니다. 혹시 시도하지 않으 셨다면 어느 것이 더 낳았는지 확인하십시오

+0

나는 그렇게 할 수밖에 없을 것이라고 생각합니다. 변수를 설정 해제하는 방법은 무엇입니까? –

+0

그렇게하기 전에 PhP'memory_get_usage' 함수를 사용하여 메모리가 어떻게 움직이는 지, 언제 커지기 시작하는지 등을 확인한 다음 파일의 순열을 분할하고 메모리 사용이 어떻게 변경되었는지 확인하십시오. 개선 사항을 발견했다면 사용하지 않을 때 (또는 적어도 배열 또는 배열의 일부로 대부분의 메모리를 차지하므로) 모든 변수의 설정을 해제하고 수행 할 수 없을 때까지 메모리 등을 다시 검사하십시오 더. – Sugar

관련 문제