CRC'den daha hızlı seçenekler olsa da, eğer kullanırsanız, bir dereceye kadar hata algılama özelliğinden ödün vermeniz muhtemeldir. Hata algılama gereksinimlerinizin ne olduğuna bağlı olarak, alternatif olarak uygulamanıza göre optimize edilmiş CRC kodunu kullanabilirsiniz.
CRC'nin diğer seçeneklerle karşılaştırılması için Martin Thompson tarafından verilen mükemmel cevaba
bakınız .
Bu konuda yardımcı olacak bir seçenek, düzinelerce crc model ve algoritma kombinasyonları için C kaynak kodu oluşturabilen bir araç (python 1 ile yazılmış ) olan pycrc'dir . Bu, farklı kombinasyonları seçerek ve kıyaslayarak kendi uygulamanız için hızı ve boyutu optimize etmenize olanak sağlar. 1: Python 2.6 veya üstünü gerektirir.
Bu destekler crc-8
modeli , aynı zamanda destekler crc-5
, crc-16
ve crc-32
diğerleri arasında. Algoritmalar gelince bit-by-bit
, bit-by-bit-fast
ve destekler table-driven
.
Örneğin (arşivi indirerek):
$ wget --quiet http://sourceforge.net/projects/pycrc/files/pycrc/pycrc-0.8/pycrc-0.8.tar.gz/download
$ tar -xf pycrc-0.8.tar.gz
$ cd pycrc-0.8
$ ./pycrc.py --model=crc-8 --algorithm=bit-by-bit --generate c -o crc8-byb.c
$ ./pycrc.py --model=crc-8 --algorithm=bit-by-bit-fast --generate c -o crc8-bybf.c
$ ./pycrc.py --model=crc-8 --algorithm=table-driven --generate c -o crc8-table.c
$ ./pycrc.py --model=crc-16 --algorithm=table-driven --generate c -o crc16-table.c
$ wc *.c
72 256 1790 crc8-byb.c
54 190 1392 crc8-bybf.c
66 433 2966 crc8-table.c
101 515 4094 crc16-table.c
293 1394 10242 total
Tek baytlık arama yerine (256 baytlık arama tablosu ile) çift baytlık aramalar (256 baytlık arama tablosu) kullanarak belirtme gibi eğlenceli şeyler bile yapabilirsiniz.
Örneğin (git deposunu klonlamak):
$ git clone http://github.com/tpircher/pycrc.git
$ cd pycrc
$ git branch
* master
$ git describe
v0.8-3-g7a041cd
$ ./pycrc.py --model=crc-8 --algorithm=table-driven --table-idx-width=4 --generate c -o crc8-table4.c
$ wc crc8-table4.c
53 211 1562 crc8-table4.c
Bellek ve hız sınırlamalarınız göz önüne alındığında, bu seçenek hız ve kod boyutu arasında en iyi uzlaşma olabilir. Emin olmanın tek yolu buna rağmen kıyaslama yapmak olacaktır.
Pycrc git depo üzerinde github onun olduğu gibi sorun izleyici , ama aynı zamanda indirilebilir sourceforge .