Visualizzazione dei risultati da 1 a 8 su 8

Discussione: ottimizzazione script

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36

    ottimizzazione script

    Salve, sto realizzando uno script che, oltre a calcolare (ricorsivamente) tutte le possibili permutazioni degli elementi di array in input, combina tra loro le varie permutazioni..In pratica, in base agli elementi nell'array ottengo risultati che possono arrivare al milione di combinazioni...Il tempo di calcolo può arrivare fino a svariati minuti e volevo appunto sapere se c'è qualche modo per velocizzare l'esecuzione dello script (una tecnica che lavora sulla cache o qualcos'altro)...Qualcuno sa se esiste qualcosa simile???
    Grazie e un saluto

  2. #2
    Utente di HTML.it L'avatar di Alpha!
    Registrato dal
    May 2005
    Messaggi
    68

    Re: ottimizzazione script

    Originariamente inviato da yader
    Salve, sto realizzando uno script che, oltre a calcolare (ricorsivamente) tutte le possibili permutazioni degli elementi di array in input, combina tra loro le varie permutazioni..In pratica, in base agli elementi nell'array ottengo risultati che possono arrivare al milione di combinazioni...Il tempo di calcolo può arrivare fino a svariati minuti e volevo appunto sapere se c'è qualche modo per velocizzare l'esecuzione dello script (una tecnica che lavora sulla cache o qualcos'altro)...Qualcuno sa se esiste qualcosa simile???
    Grazie e un saluto
    da PHP.ini puoi impostare quante risorse puo usare uno script.

    memory_limit = 1024M; # 1 Gb
    max_execution_time = 600; # 10 minuti

    Prova e fammi sapere

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36
    si già ho provato questa soluzione ma non miglioro tanto....Ho provato a sostituire il count(...) con il pre-conteggio e un pò è migliorato ma non quello che sto cercando...

  4. #4
    Supponendo che ci metta 1 millisecondo per estrarre e memorizzare ogni combinazione, tu devi estrarre 1.000.000 di combinazioni pari a 1000 secondi ... venti minuti.

    Quello è un problema di ricerca bruta, implementarlo senza ricorsione sarebbe sicuramente più performante ma più complicato... devi solo pazientare
    Fidatevi del dottor Auz!
    http://dottorauz.blogspot.com

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36
    Ho eliminato la ricorsione e adottato l'iterazione...Il tempo di esecuzione di è abbreviato notevolmente; 6144 combinazioni ottenunte in più di 4 minuti con la ricorsione, in 40 secondi con l'iterazione..Il passo in avanti è stato notevole ma se andiamo nell'ordine del milione di combinazione si perde ugualmente...Cercando su internet ho trovato qualcosa tipo funzioni flush() e roba tipo zlib.output_compression = on e zlib.output_compression_level = (livello da 1 a 9)...Li ho entrambi provati ma sinceramente o non sono riuscito io a usarli nel modo corretto e servono per altri scopi..
    Vi garantisco che l'algoritmo da me scritto compie il minor numero di operazioni possibile per calcolare il risultato, quindi non penso di poterlo migliorare ancora...

  6. #6
    Utente di HTML.it L'avatar di Alpha!
    Registrato dal
    May 2005
    Messaggi
    68
    Originariamente inviato da yader
    Ho eliminato la ricorsione e adottato l'iterazione...Il tempo di esecuzione di è abbreviato notevolmente; 6144 combinazioni ottenunte in più di 4 minuti con la ricorsione, in 40 secondi con l'iterazione..Il passo in avanti è stato notevole ma se andiamo nell'ordine del milione di combinazione si perde ugualmente...Cercando su internet ho trovato qualcosa tipo funzioni flush() e roba tipo zlib.output_compression = on e zlib.output_compression_level = (livello da 1 a 9)...Li ho entrambi provati ma sinceramente o non sono riuscito io a usarli nel modo corretto e servono per altri scopi..
    Vi garantisco che l'algoritmo da me scritto compie il minor numero di operazioni possibile per calcolare il risultato, quindi non penso di poterlo migliorare ancora...
    Allora le uniche change sono:
    1- potenziare la macchina su cui fai girare lo script
    2- migliorare php.ini
    3- usare una classe di PHP per fare multithreading (cerca su google che c'è: php multithreading)

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36
    Le macchina sarà un server aruba..Potenziare php.ini in che modo???Comunque seguirò i tuoi consigli e ti farò sapere...Grazie 1000

  8. #8
    Utente di HTML.it L'avatar di Alpha!
    Registrato dal
    May 2005
    Messaggi
    68
    Originariamente inviato da yader
    Le macchina sarà un server aruba..Potenziare php.ini in che modo???Comunque seguirò i tuoi consigli e ti farò sapere...Grazie 1000
    Come nel post precedente. Poi spetta a te comunque installare magari Centos la versione minimal, installare PHP e cercare di rendere la macchina più snella possibile.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.