Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
Nelle ultime settimane abbiamo provato tre delle proposte top di gamma di NZXT nelle categorie case, dissipatori e ventole. Rispettivamente, parliamo dell'H9 Flow RGB+, Kraken Elite 420 e F140X. Si tratta, chiaramente, di prodotti di fascia alta che si rivolgono agli utenti DIY che desiderano il massimo per la propria build. Tuttavia, mentre i primi due dispositivi mantengono questa direzione, le ventole purtroppo hanno mostrato qualche tallone d'Achille di troppo
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-08-2010, 11:41   #1
Bronsa
Junior Member
 
Iscritto dal: May 2008
Messaggi: 21
[lisp] calcolatore pigreco

Boh mi annoiavo e così ho scritto questo script in Common Lisp che calcola n cifre di pi greco, utilizzando la formula di Machin,e la serie di Taylor per calcolare l'arcocotangente

per rendere piu' veloce l'esecuzione e per evitare stack overflow ha usato tail-recursion, con il quale sovrascrive continuamente lo stesso segmento di stack ad ogni ricorsione senza riempire la memoria ed evitare, appunto stackoverflow

inoltre per evitare di thrownare in floating-point-overflow ,ho deciso di operare su interi anziche' su floating

il tempo di esecuzione quadruplicizza al raddoppiare delle cifre da trovare; sul mio pc per calcolare 50mila cifre dopo la virgola impiega 15secondi, fate i conti voi.
===EDIT==
con la nuova version impiaga sulla mia macchina 17 secondi per calcolare 100mila cifre

il codice e' implementation dependent, l'ho volutamente reso compatibile solo usando sbcl dall momento che è l' unica implementazione in grado di svolgere questi conti e lo fa ottimamente poichè a differenza di altre implementazioni, compila in codice macchina anziche bytecode

purtroppo a causa dei limiti imposti dal linguaggio, viene eseguito senza sfruttare il multi core, l'unico modo che ho trovato per risolvere, è calcolare in parallelo su 2 thread diversi le 2 arcocotangenti, che limita comunque a massimo 2 core utilizzati


il sorgente si trova su http://sprunge.us/eCPK?cl
====EDIT==== dopo varie modifiche ho ottenuto un aumento delle prestazioni pari a circa del 70 %, il codice aggiornato è qui http://sprunge.us/cYNY?cl

commenti e suggerimenti sono ben accetti

P.S se riesco a trovare un modo per trasformare floating in interi anche con l'algoritmo di Gauss-Legendre, implementero quello che rendera' il calcolo _molto_ più veloce
Bronsa è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2010, 14:30   #2
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
ciao, dando una rapida occhiata col profiler la maggior parte del tempo viene passato nelle operazioni tra bignum o altre funzioni interne di sbcl, per cui a meno di ridurre le operazioni stesse (o di cambiare algoritmo ovviamente) riuscirai a limare poco (ad esempio hai provato a spezzare in due arccos in modo da non dover moltiplicare per il segno, o di sfruttare entrambi i valori di floor ?).
In generale comunque quando vuoi ottenere le massime prestazioni aggiungi in cima al codice
Codice:
(declaim (optimize speed))
In questo modo il compilatore salta un po' di controlli (ad esempio i bound degli array); se il programma e' corretto va piu' veloce, se non lo e' rischi che crashi.
Inoltre nelle funzioni piu' interne e' buona cosa specificare il tipo dei dati
Ad esempio
Codice:
(defun arccot (x-rest n x-elevate sign product)
  "Arccotangent calculator, using Taylor series"
  (declare (type fixnum sign)
            (type integer x-rest n x-elevate product))
...
Aumenta la velocita' delle operazioni numeriche , perche' il compilatore non deve aggiungere il codice per controllare il tipo dell'argomento.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2010, 16:02   #3
Bronsa
Junior Member
 
Iscritto dal: May 2008
Messaggi: 21
guarda, mi son dimenticato di postare ma questa mattina mi son accorto di essermi dimenticato e ho inserito (declaim (optimize (speed 3) (safety 0) (debug 0)))

Per il fatto di definire il tipo delle variabili esplicitamente, non ci avevo pensato

Intendi una cosa tipo
(defun arccot+ (..)
...
(arccot- ..))
(defun arccot- (..)
...
(arccot+ ..))
?

==EDIT==
Effettivamente creando 2 funzioni ho guadagnato un pò di ottimizzazione...
http://sprunge.us/JgaZ?cl

Ultima modifica di Bronsa : 20-08-2010 alle 16:32.
Bronsa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Anthropic ha un'AI che trova falle in Wi...
I 10 migliori sconti Amazon del weekend:...
Con un coupon scendono ancora: le super ...
Minimo storico per Samsung Galaxy S26 Ul...
Si è conclusa la missione lunare ...
EK Waterblock si arrende agli aumenti, i...
Geekbench si aggiorna: tutti i test con ...
Per la prima volta un computer quantisti...
Telecamere Reolink 4K su Amazon: Wi-Fi 6...
Anthropic vuole farsi i chip da sola? Co...
Il fondatore di Framework: il personal c...
JBL Live Flex 3 a 129€ su Amazon: ANC ad...
Come un uomo ha costruito un'azienda da ...
Multe fino a 400 euro anche se hai pagat...
Tapo lancia una valanga di offerte su Am...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:39.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v