Vor 15 Jahren habe ich beim Programmieren mit Pascal verstanden, warum man die Zweierpotenz für die Speicherzuweisung verwendet. Aber das scheint immer noch State-of-the-Art zu sein.Warum verwenden alle 2^n Nummern für die Zuweisung? -> new StringBuilder (256)
C# Beispiele:
new StringBuilder(256);
new byte[1024];
int bufferSize = 1 << 12;
Ich sehe noch diese tausende Male, verwende ich mir dies und ich bin in Frage noch:
Brauchen wir diese in modernen Programmiersprachen und moderne Hardware?
Ich schätze seine gute Praxis, aber was ist der Grund?
EDIT
Zum Beispiel eines byte[]
Array, wie hier durch Antworten angegeben, wird eine Potenz von 2 keinen Sinn machen: (?) Das Array selbst 16 Byte verwenden wird, ist es so Sinn 240 zu bedienen (= 256-16) für die Größe von insgesamt 256 Bytes?
Da die CPU Arbeit binär, Speicherblöcke (Seiten) sind 2^n Größe (warum Abfall Hälfte memblocks) und die sind zu indizieren einfach. Mehr Infos hier: http://en.wikipedia.org/wiki/Computer_number_format und hier: https://en.wikipedia.org/wiki/Page_(computer_memory) –
Ich denke, die meisten ist zu zeigen, ... Sie können‘ t wirklich wissen, was genau Puffergröße für komplexe Klasse zugeordnet ('Dictionary' oder sogar' Liste 'oder' StringBuilder'), für Byte-Arrays etwas macht es Sinn, als Jack erklärt. –