2016-08-27 11 views
6

Mam dużo console.log() w mojej aplikacji. Większość z nich znajduje się w blokach catch, więc mogę wyraźnie zobaczyć, co poszło nie tak podczas rozwijania. Niektóre z nich służą do rejestrowania bieżącego czasu, więc mogę sprawdzić czasy wykonania funkcji.React Native - czy console.log() ma negatywny wpływ na wydajność podczas przechodzenia do produkcji?

Po wdrożeniu do produkcji te console.log() będą działać na urządzeniach klienta. Czy mogę po prostu zostawić je takimi, jakie są? Czy spowodują one uszkodzenie wydajności/pamięci lub mogą spowodować pewne wyjątki lub niepożądane zachowania?

Odpowiedz

1

Cóż .. tak. Więcej kodu oznacza dłuższy czas wykonania. Nie tylko zajmie niepotrzebną "moc" procesora, ale także będzie synchronizować, co spowoduje, że twoja aplikacja będzie wolniejsza (nawet o kilka nanosekund).

Jednakże, jeśli chcesz użyć debugowania, powinieneś wyglądać naprawdę na Winston. Jest asynchroniczny, więc rozwiązuje wyżej wymieniony problem.

Jeśli nie przejmujesz się przez milisekundami, zostawiłbym to, chociaż it doesn't take much to let the bundle creator strip code that's going to be production ready. Można po prostu zrobić coś jak następuje:

if(__DEV__) { 
    console.log('This will be stripped in production.'); 
} 
13

Od React Native dokumentów:

oświadczenia console.log

Po uruchomieniu dołączonego aplikacji, oświadczenia te mogą powodować duże wąskie gardło w wątku JavaScript. Obejmuje to wywołania z debugowania bibliotek, takie jak redux-logger, więc pamiętaj, aby je usunąć przed sprzedażą pakietową.

Więc tak .. I będzie je usunąć :)

Te w swoich sprawozdaniach dotyczących połowów może być ok, aby pozostawić w ogniu, ponieważ tylko jeśli jest to problem (raczej chwycić więcej informacji na ten temat niż zmartwienia o przeboju wydajności)

jest więcej porad na temat wydajności reagują rodzimych docs here

0

jest to dobra praktyka, aby wyłączyć wszystkie console.log oświadczenia w całej aplikacji?

Jakieś skutki uboczne?

Na górze pliku: App.js obejmują:

// To assign console.log to nothing 
if (!__DEV__) { 
    console.log =() => {}; 
} 
Powiązane problemy