Meskipun mungkin ada opsi yang lebih cepat daripada CRC, jika Anda menggunakannya maka Anda cenderung mengorbankan beberapa tingkat kemampuan deteksi kesalahan. Bergantung pada apa persyaratan deteksi kesalahan Anda, alternatifnya mungkin menggunakan kode CRC yang dioptimalkan untuk aplikasi Anda.
Untuk perbandingan CRC dengan opsi lain, lihat jawaban yang sangat bagus oleh
Martin Thompson .
Salah satu opsi untuk membantu ini adalah pycrc yang merupakan alat (ditulis dalam python 1 ) yang dapat menghasilkan kode sumber C untuk puluhan kombinasi model dan algoritma CRC . Ini memungkinkan Anda untuk mengoptimalkan kecepatan dan ukuran untuk aplikasi Anda sendiri dengan memilih dan membandingkan berbagai kombinasi. 1: Membutuhkan Python 2.6 atau yang lebih baru.
Ini mendukung crc-8
model , tetapi juga mendukung crc-5
, crc-16
dan di crc-32
antara yang lainnya. Adapun algoritma , mendukung bit-by-bit
, bit-by-bit-fast
dan table-driven
.
Misalnya (mengunduh arsip):
$ 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
Anda bahkan dapat melakukan hal-hal yang funky seperti menentukan menggunakan pencarian nibble ganda (dengan tabel pencarian 16 byte) daripada mencari byte tunggal, dengan tabel pencarian 256 byte.
Sebagai contoh (kloning repositori git):
$ 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
Mengingat keterbatasan memori dan kecepatan Anda, opsi ini mungkin merupakan kompromi terbaik antara kecepatan dan ukuran kode. Satu-satunya cara untuk memastikannya adalah dengan membandingkannya.
The pycrc git repositori pada github , seperti yang pelacak isu , tetapi juga dapat didownload dari sourceforge .