Niedawno podczas dyskusji zostałem poproszony przez innego programistę o wprowadzenie pewnych zmian w kodzie. Miałem coś takiego:Co to jest fast string.empty() lub string.size() == 0?
if(mystring.size() == 0)
// do something
else
// do something else
Dyskusję dotyczącą używania mystring.empty()
do sprawdzania, czy ciąg jest pusty. Teraz zgadzam się, że można argumentować, że kod string.empty()
jest bardziej szczegółowy i czytelny, ale czy są jakieś korzyści z wydajności?
zrobiłem kilka kopanie i znaleźć te 2 odpowiedzi odnoszące się do mojego pytania:
Obie odpowiedzi podporą moją tezę, że string.empty()
jest po prostu bardziej czytelne i nie oferuje żadnych korzyści związanych z wydajnością w porównaniu z string.size() == 0
.
Nadal chcę mieć pewność, czy istnieją jakieś implementacje string
, które utrzymują wewnętrzną flagę boolowatą w celu sprawdzenia, czy ciąg znaków jest pusty, czy nie?
Czy istnieją inne sposoby wykorzystania niektórych implementacji, które unieważniają moje roszczenia?
@chris: Zgadzam się z tobą kolega. Chciałem tylko potwierdzić. –
"moje twierdzenie, że string.empty() jest po prostu bardziej czytelny i nie oferuje żadnych korzyści wydajnościowych" - ** po prostu? ** Czytelność jest pierwszym priorytetem właściwego programowania; występ, szczególnie na tym poziomie, daleko za sobą. "jeśli są jakieś implementacje ciągu znaków" - nawet jeśli byłyby, gdyby były tylko porównanie wartości do zera, tak samo jak dla rozmiaru == 0. –
@JimBalter: Uważam również, że najważniejsza jest czytelność kodu, I po prostu chciał uzyskać dane wejściowe od ludzi tutaj na SO jest podstawowe implementacje empty() były szybsze niż size()? –