Użyj formularza, który jest najbardziej przydatny dla twojego programu. Zasadniczo oznacza to, że przydatne jest, aby wartość była nil
, a następnie użyj wskaźnika.
Z perspektywy wydajności prymitywne typy liczbowe są zawsze bardziej wydajne do kopiowania niż do dereferencji wskaźnika. Jeszcze bardziej złożone struktury danych są zwykle szybsze do skopiowania, jeśli są mniejsze niż linia lub dwa cache (poniżej 128 bajtów jest dobrą zasadą dla procesorów x86).
Gdy rzeczy stają się nieco większe, musisz sprawdzić, czy wydajność Cię dotyczy. Procesory są wydajne przy kopiowaniu danych i istnieje wiele zmiennych, które określają lokalizację i przyjazność pamięci podręcznej twoich danych, to naprawdę zależy od zachowania twojego programu i sprzętu, którego używasz.
To doskonała seria artykułów, jeśli chcesz lepiej zrozumieć interakcję pamięci i oprogramowania: "What every programmer should know about memory".
Mówiąc krótko, mówię ludziom, aby wybierali wskaźnik, czy nie, w oparciu o logikę programu, i martwili się później o wydajność.
- Użyj wskaźnika, jeśli chcesz przekazać coś do zmodyfikowania.
- Użyj wskaźnika, jeśli chcesz określić, czy coś było nieuzbrojone/zero.
- Użyj wskaźnika, jeśli używasz typu, który ma metody z odbiornikami wskazówek.
Dodałem tylko jedno wyjaśnienie do twojej znakomitej odpowiedzi: brak czwartego punktu wypunktowania: "w przeciwnym razie nie używaj wskaźnika, chyba że daje bardzo wyraźną poprawę wydajności" –