Diziler veya std::kullanma C , ne'performans farkının s?vektörler
C Rotamız yeni projeler üzerinde C diziler artık kullanmamanızı öneririm. Stroustroup bildiğim kadarıyla diziler kullanmamayı kendini gösteriyor. Ama ciddi performans farkı var mıdır?
CEVAP
new
C diziler (dinamik diziler kullanarak) kullanımından kaçınılmalıdır. Boyutu takip etmek sorun var, ve bunları el ile silin ve temizlik her tür yapmak gerekir.
Üzerinde dizileri kullanarak yığını da denetleme aralığı yok çünkü cesareti ve çevresinde dizinin geçen büyüklüğü (işaretçi dönüşüm dizi) hakkında herhangi bir bilgi kaybedersiniz. Küçük bir sınıf C bir dizi sarar ve size
İşlev ve kullanımına üzerinden yineleme sağlayan bu durumda, boost::array
kullanmalısınız.
Şimdi::std vektör C vs yerli diziler(internetten alınan):
// Comparison of assembly code generated for basic indexing, dereferencing,
// and increment operations on vectors and arrays/pointers.
// Assembly code was generated by gcc 4.1.0 invoked with g -O3 -S on a
// x86_64-suse-linux machine.
#include <vector>
struct S
{
int padding;
std::vector<int> v;
int * p;
std::vector<int>::iterator i;
};
int pointer_index (S & s) { return s.p[3]; }
// movq 32(%rdi), %rax
// movl 12(%rax), êx
// ret
int vector_index (S & s) { return s.v[3]; }
// movq 8(%rdi), %rax
// movl 12(%rax), êx
// ret
// Conclusion: Indexing a vector is the same damn thing as indexing a pointer.
int pointer_deref (S & s) { return *s.p; }
// movq 32(%rdi), %rax
// movl (%rax), êx
// ret
int iterator_deref (S & s) { return *s.i; }
// movq 40(%rdi), %rax
// movl (%rax), êx
// ret
// Conclusion: Dereferencing a vector iterator is the same damn thing
// as dereferencing a pointer.
void pointer_increment (S & s) { s.p; }
// addq $4, 32(%rdi)
// ret
void iterator_increment (S & s) { s.i; }
// addq $4, 40(%rdi)
// ret
// Conclusion: Incrementing a vector iterator is the same damn thing as
// incrementing a pointer.
JavaScript içinde Tek veya Çift Tırnak...
Ben kullanma= gerekir! veya <&TSQL ...
Varlık Çerçevesi - Kullanma İşlemleri ...
Haskell: Listeler, Diziler, Vektörler,...
MYSQL VEYA performans vs...