You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/05-data-types/11-date/article.md
+25-25
Original file line number
Diff line number
Diff line change
@@ -264,31 +264,31 @@ alert( `Bucla a durat ${end - start} ms` ); // scade numere, nu date
264
264
265
265
## Benchmarking
266
266
267
-
If we want a reliable benchmark of CPU-hungry function, we should be careful.
267
+
Dacă dorim un benchmark fiabil al unei funcții care consumă mult CPU, trebuie să fim atenți.
268
268
269
-
For instance, let's measure two functions that calculate the difference between two dates: which one is faster?
269
+
De exemplu, să măsurăm două funcții care calculează diferența dintre două date: care dintre ele este mai rapidă?
270
270
271
-
Such performance measurements are often called "benchmarks".
271
+
Astfel de măsurători de performanță sunt adesea numite "benchmarks".
272
272
273
273
```js
274
-
//we have date1 and date2, which function faster returns their difference in ms?
274
+
//avem date1 și date2, care funcție returnează mai repede diferența lor în ms?
275
275
functiondiffSubtract(date1, date2) {
276
276
return date2 - date1;
277
277
}
278
278
279
-
//or
279
+
//sau
280
280
functiondiffGetTime(date1, date2) {
281
281
returndate2.getTime() -date1.getTime();
282
282
}
283
283
```
284
284
285
-
These two do exactly the same thing, but one of them uses an explicit `date.getTime()`to get the date in ms, and the other one relies on a date-to-number transform. Their result is always the same.
285
+
Acestea două fac exact același lucru, dar una dintre ele folosește `date.getTime()`explicit pentru a obține data în ms, iar cealaltă se bazează pe o transformare dată-la-număr. Rezultatul lor este întotdeauna același.
286
286
287
-
So, which one is faster?
287
+
Așadar, care dintre ele este mai rapidă?
288
288
289
-
The first idea may be to run them many times in a row and measure the time difference. For our case, functions are very simple, so we have to do it at least 100000 times.
289
+
Prima idee ar putea fi să le rulăm de multe ori la rând și să măsurăm diferența de timp. Pentru cazul nostru, funcțiile sunt foarte simple, așa că trebuie să o facem de cel puțin 100000 de ori.
alert( 'Time of diffGetTime: '+bench(diffGetTime) +'ms' );
313
313
```
314
314
315
-
Wow! Using`getTime()`is so much faster! That's because there's no type conversion, it is much easier for engines to optimize.
315
+
Wow! Utilizând`getTime()`este mult mai rapid! Asta pentru că nu există conversie de tip, este mult mai ușor de optimizat pentru motoare.
316
316
317
-
Okay, we have something. But that's not a good benchmark yet.
317
+
Bine, avem ceva. Dar acesta nu este un benchmark bun încă.
318
318
319
-
Imagine that at the time of running `bench(diffSubtract)` CPU was doing something in parallel, and it was taking resources. And by the time of running `bench(diffGetTime)`that work has finished.
319
+
Imaginați-vă că în momentul rulării `bench(diffSubtract)` CPU-ul făcea ceva în paralel, și acesta consuma resurse. Iar până în momentul în care se execută `bench(diffGetTime)`acea sarcină s-a terminat.
320
320
321
-
A pretty real scenario for a modern multi-process OS.
321
+
Un scenariu destul de real pentru un multiproces modern de OS.
322
322
323
-
As a result, the first benchmark will have less CPU resources than the second. That may lead to wrong results.
323
+
Ca urmare, primul benchmark va avea mai puține resurse CPU decât al doilea. Acest lucru poate duce la rezultate greșite.
324
324
325
-
**For more reliable benchmarking, the whole pack of benchmarks should be rerun multiple times.**
325
+
**Pentru un benchmarking mai fiabil, întregul pachet de benchmarks ar trebui rulat de mai multe ori.**
326
326
327
-
For example, like this:
327
+
De exemplu, cam așa:
328
328
329
329
```js run
330
330
functiondiffSubtract(date1, date2) {
@@ -348,35 +348,35 @@ let time1 = 0;
348
348
let time2 =0;
349
349
350
350
*!*
351
-
//run bench(diffSubtract) and bench(diffGetTime) each 10 times alternating
351
+
//execută bench(diffSubtract) și bench(diffGetTime) fiecare de 10 ori alternativ
352
352
for (let i =0; i <10; i++) {
353
353
time1 +=bench(diffSubtract);
354
354
time2 +=bench(diffGetTime);
355
355
}
356
356
*/!*
357
357
358
-
alert( 'Total time for diffSubtract: '+ time1 );
359
-
alert( 'Total time for diffGetTime: '+ time2 );
358
+
alert( 'Timp total pentru diffSubtract: '+ time1 );
359
+
alert( 'Timp total pentru diffGetTime: '+ time2 );
360
360
```
361
361
362
-
Modern JavaScript engines start applying advanced optimizations only to "hot code" that executes many times (no need to optimize rarely executed things). So, in the example above, first executions are not well-optimized. We may want to add a heat-up run:
362
+
Motoarele JavaScript moderne încep să aplice optimizări avansate doar pentru "codul fierbinte" care se execută de mai multe ori (nu este nevoie să optimizeze lucruri executate rar). Așadar, în exemplul de mai sus, primele execuții nu sunt bine optimizate. Am vrea să adăugăm o execuție de încălzire:
363
363
364
364
```js
365
-
//added for "heating up" prior to the main loop
365
+
//adăugată pentru "încălzire" înainte de bucla principală
Modern JavaScript engines perform many optimizations. They may tweak results of"artificial tests" compared to "normal usage", especially when we benchmark something very small, such as how an operator works, or a built-infunction. So if you seriously want to understand performance, then please study how the JavaScript engine works. And then you probably won't need microbenchmarks at all.
376
+
```warn header="Aveți grijă când faceți microbenchmarking"
377
+
Motoarele JavaScript moderne efectuează multe optimizări. Acestea ar putea ajusta rezultatele "testelor artificiale" în comparație cu "utilizarea normală", în special atunci când efectuăm benchmark-uri pentru ceva foarte mic, cum ar fi modul în care funcționează un operator sau o funcție încorporată. Deci dacă vreți să înțelegeți în mod serios performanța, atunci vă rugăm să studiați modul în care funcționează motorul JavaScript. Și atunci probabil că nu veți avea nevoie deloc de microbenchmarks.
378
378
379
-
The great pack of articles about V8 can be found at <https://mrale.ph>.
379
+
Marele pachet de articole despre V8poate fi găsit la<https://mrale.ph>.
0 commit comments