Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2005, 05:21   #1
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9458
[C] Il tempo di una... fork()...

Ciao, vorrei sapere se, volendo calcolare il tempo necessario per effettuare una fork() e' indifferente far terminare subito il figlio nato dalla fork o no.
Ovvero: questi 2 modi di calcolare il tempo di fork si "equivalgono" ?

Modo 1:
Codice:
int pid;
long int forkTime;

struct timeval * start = (struct timeval*) malloc(sizeof(struct timeval));
struct timeval * end =  (struct timeval*) malloc(sizeof(struct timeval));

gettimeofday(start, NULL);

pid = fork();/*Ometto il controllo sull'errore per brevita'...*/
if (pid == 0)
   exit(EXIT_SUCCESS);
/*Qui arriva solo il padre*/

gettimeofday(end, NULL);

forkTime = (end->tv_sec - start->tv_sec) * 1000000 + (end->tv_usec - start->tv_usec);
/*Tempo in microsecondi/*

free(start);
free(end);
Modo 2:
Codice:
 
int pid;
long int forkTime;

struct timeval * start = (struct timeval*) malloc(sizeof(struct timeval));
struct timeval * end =  (struct timeval*) malloc(sizeof(struct timeval));

gettimeofday(start, NULL);

pid = fork();/*Ometto il controllo sull'errore per brevita'...*/
if (pid == 0)
{
     /*Qua faccio qualcosa*/
    /*Ad esempio...*-/
    int i = 0;
    while(i < 300)
    {
       printf("Child> nel ciclo");
       i++;
    }
    exit(EXIT_SUCCESS);
}

/*Qui arriva solo il padre*/

gettimeofday(end, NULL);

forkTime = (end->tv_sec - start->tv_sec) * 1000000 + (end->tv_usec - start->tv_usec); 
/*Tempo in microsecondi/*

free(start);
free(end);
Grazie !
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.

Ultima modifica di Ed_Bunker : 14-02-2005 alle 14:04.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2005, 21:48   #2
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9458
Ho provato sperimentalmente e nel primo modo il tempo medio di fork() (Eseguendone mille una dietro l'altra) e' di circa 23 microsecondi mentre nel secondo modo risulta essere di 64 microsecondi.
Nessun parere ?!?
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2005, 13:23   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
A me ritorna circa lo stesso valore.
Nota che il metodo che usi non è proprio affidabile, in quanto normalmente il controllo passa al child dopo una fork. Quindi in realtà quello che stai misurando è il tempo di fork, più il tempo di esecuzione del figlio (al più fino al suo naturale context switch, ma non è il tuo caso), più il tempo per effettuare un giro di scheduling dal figlio a nuovamente il padre. Questo tempo può dipendere da quello che fa il figlio, ma tra una exit e una sleep non c'è molta differenza.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2005, 13:49   #4
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9458
Quote:
Originariamente inviato da ilsensine
A me ritorna circa lo stesso valore.
Nota che il metodo che usi non è proprio affidabile, in quanto normalmente il controllo passa al child dopo una fork. Quindi in realtà quello che stai misurando è il tempo di fork, più il tempo di esecuzione del figlio (al più fino al suo naturale context switch, ma non è il tuo caso), più il tempo per effettuare un giro di scheduling dal figlio a nuovamente il padre. Questo tempo può dipendere da quello che fa il figlio, ma tra una exit e una sleep non c'è molta differenza.
Il controllo non sempre passa al child. A priori non e' possibile dirlo. Provando infatti a fare una stampa sia nel codice del figlio che in quello del padre ed eseguendo piu' volte si ottengono risultati differenti. Quel che volevo constatare e':
se il figlio consuma completamente o in parte il suo quanto di tempo (Supponendo che il controllo dopo la fork sia passato proprio al figlio) il tempo misurato dal padre sara' poco attendibile. No ?
Invece se il figlio fa subito una exit (E non consuma quindi il suo quanto), sia che il controllo passi al padre, sia che passi al figlio (Ma non a qualche altro processo sulla macchina) il valore registrato dovrebbe essere piu' attendibile.
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2005, 14:07   #5
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9458
Adesso ho modificato; il codice in rosso non e' quello con cui avevo fatto le prove. Facendo una sleep come prima, infatti, il processo figlio rilascia il controllo che, presumibilmente, viene preso dal padre che cosi' calcola un valore piuttosto attendibile. Adesso si dovrebbe notare qualche differenza. Prova...
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2005, 14:44   #6
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Ed_Bunker
Il controllo non sempre passa al child. A priori non e' possibile dirlo.
Linux si comporta così da diverso tempo. E' comunque errato presumerlo a priori, hai ragione, era solo per darti una spiegazione di quello che avveniva e del perché il tuo metodo di misurare il tempo di fork è inaffidabile. Prova ad esempio a sostituire la sleep con un for(;; ); e divertiti a vedere i risultati. E' forse cambiato il tempo per eseguire la fork? No, è quello che stai misurando che non è _solo_ il tempo di fork.
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Auto sempre al top: compressore Xiaomi, ...
In Francia si ragiona sul ban dei social...
Tesla Model Y è l'auto più...
Il caricatore definitivo, ok anche coi M...
Amazon Haul rilancia: sconti automatici ...
Upgrade PC a prezzi ribassati: Amazon sc...
Nel mirino dell'Europa ci sono caminetti...
2 portatili super su Amazon: quello con ...
Amazon inizia l'anno con prezzi in picch...
Addio caminetto, il fiume di melma di Gh...
Sfreccia a Trento con una e-bike a 85 km...
I 6 smartphone più scontati su Am...
La capsula SpaceX Dragon CRS-33 ha acces...
La NASA è sempre più vicin...
Crisi delle memorie: ASUS torna al passa...
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: 10:29.


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