Ricordi i bei vecchi tempi quando l'apertura di un semplice documento o di una pagina Web era dolorosamente lenta in quanto conteneva tutte le scarse risorse del tuo computer? E oggi, fare lo stesso è ancora più lento, nonostante il tuo processore sia centinaia di volte più veloce e abbia accesso a migliaia di volte più memoria?
Per simulare l'effetto del bloat negli attuali visualizzatori di documenti e applicazioni simili, scrivere un programma che presenta problemi di prestazioni visibili quando eseguito su macchine più potenti .
Per avere un compito comune per tutti, rendilo un generatore di numeri primi .
- Il programma deve stampare numeri primi consecutivi, a partire da 2, ciascuno in una nuova riga e nient'altro. Dovrebbe farlo per sempre (o fino a esaurire la memoria). Come questo:
2 3 5 7 11 13 17
Dovrebbe esserci un ritardo tra la stampa di ogni riga, abbastanza da essere percepibile da un essere umano.
Questo ritardo dovrebbe essere più lungo man mano che la macchina su cui è in esecuzione il programma diventa più veloce. Più veloce è la macchina, più lento è il programma.
Non specificherò benchmark esatti in quanto potrebbe diventare soggettivo, ma ci dovrebbe essere una differenza percepibile dall'uomo nella velocità su due macchine diverse se c'è una differenza significativa tra le prestazioni delle due macchine.
La velocità del programma non deve essere monotonicamente decrescente su tutte le macchine esistenti mai create. Questo sarebbe difficile da specificare, e ancora più difficile da verificare. Mi fido del buon senso dei concorrenti su ciò che può essere considerato una prestazione significativamente diversa tra le macchine, ed è sufficiente per soddisfarlo.
Inoltre non specificherò esatti limiti di tempo superiore o inferiore, ma dovrebbe essere entro limiti ragionevoli, quindi per favore non ci sono giorni o anni tra la stampa di due righe.
Non avrò bisogno di funzionare su tutto, dall'Eniac ai giorni nostri, ma dovrebbe essere abbastanza generale, ad esempio, non è consentito dire che funziona solo su due tipi di CPU specifici e rileva specificamente il nome di una CPU specifica su cui funzionerà sempre più lentamente.
Il codice non dovrebbe fare affidamento sulla versione del compilatore o dell'interprete. Dovrebbe funzionare se la stessa versione del compilatore / interprete è installata su una macchina più lenta e più veloce, o anche se il codice binario / bytecode è compilato su una macchina e quindi eseguito su due macchine diverse.
Spiegare i principi di funzionamento del programma. Poiché sarà difficile riprodurre i risultati, la validità della risposta potrebbe dipendere dalla fattibilità del metodo.
Anche se mi sarebbe piaciuto che diventasse un concorso subdolo, purtroppo questo sito non è più "Programmazione di puzzle e code golf", ma semplicemente "code golf", quindi vince il codice più corto.