Je cherchais une fonction BinaryReader.Skip, alors que je suis tombé sur ce feature request on msdn. Il a dit que vous pouvez fournir votre propre fonction BinaryReader.Skip(), en l'utilisant.Différence entre plusieurs BinaryReader.Read() et BinaryReader.ReadBytes (int i)
recherche seulement à ce code, je me demande pourquoi il a choisi cette façon de sauter une certaine quantité d'octets:
for (int i = 0, i < count; i++) {
reader.ReadByte();
}
Y at-il une différence entre cela et:
reader.ReadBytes(count);
Même si c'est juste une petite optimalisation, je voudrais me défaire. Parce que maintenant cela n'a pas de sens pour moi pourquoi vous utiliseriez la boucle for.
public void Skip(this BinaryReader reader, int count) {
if (reader.BaseStream.CanSeek) {
reader.BaseStream.Seek(count, SeekOffset.Current);
}
else {
for (int i = 0, i < count; i++) {
reader.ReadByte();
}
}
}
Cela n'a aucun sens pour moi. Pourquoi ReadBytes serait-il plus rapide? –
@Timo, si le nombre d'octets est suffisamment important, vous obtiendrez une copie de mémoire de bloc et moins d'appels de méthode. ReadByte est virtuel, ce qui peut ajouter une petite quantité de frais généraux. Ce n'est pas susceptible d'être une énorme différence de toute façon. –
@Dan, @Timo: Il émettra moins de demandes au flux sous-jacent. En lisant à partir du disque, cela peut faire la différence. – SLaks