Двата израза правят основно едно и също нещо на основно ниво на API, което е получаване на курсора и преобразуване на резултатите. Има обаче една „основна“ разлика относно производителността:
-
.forEach()
ще преобразува резултатите от курсора "един по един" и ще обработи предоставената функция на итератора. -
.fetch()
от друга страна получава "масива" от курсора "всички наведнъж", което означава, че всичко е "в паметта" с едно посещение.
Така че, независимо от всичко, нито един от тях всъщност не е "по-бърз" при извършване на "основната" операция на извличане от курсора на заявката. Въпреки това, неоценяването на "израз" при всяка итерация на курсора "може да бъде" малко по-бързо, така че .fetch()
може да спечели "малко" тук.
Големият голям улов, разбира се, е „всичко вече е в паметта“, така че има „режийни“ разходи за това, които трябва да вземете предвид. Също така, по време на .fetch()
_.each()
тепърва ще се обработва, така че както се казва. „Това, което „печелите“ от люлките, вероятно ще „загубите“ на кръговите кръстовища“ .
Без пълен сравнителен анализ на конкретни случаи, „времената“ вероятно ще бъдат подобни. А общият бенчмаркинг е почти безполезен, освен ако не прилага конкретно размера на наборите от данни, с които работите.
Следователно излиза общият случай, „Приблизително същото“ , но използвайки .fetch()
ще изразходва повече памет отколкото просто итериране на курсор от самото начало.