ในขณะที่อาจมีตัวเลือกที่เร็วกว่า CRC หากคุณใช้ตัวเลือกเหล่านั้นคุณน่าจะเสียความสามารถในการตรวจจับข้อผิดพลาดไปบ้าง ทางเลือกอื่นอาจใช้รหัส CRC ที่ปรับให้เหมาะกับแอปพลิเคชันของคุณแทน
สำหรับการเปรียบเทียบของซีอาร์ซีมีตัวเลือกอื่น ๆ ให้ดูที่ยอดเยี่ยมคำตอบโดย
มาร์ติน ธ อมป์สัน
ทางเลือกหนึ่งที่จะช่วยให้มีนี้เป็นpycrcซึ่งเป็นเครื่องมือ (เขียนในหลาม1 ) ซึ่งสามารถสร้างรหัสที่มา Cสำหรับหลายสิบของการรวมกันของรุ่นซีอาร์ซีและอัลกอริทึม สิ่งนี้ช่วยให้คุณสามารถปรับความเร็วและขนาดให้เหมาะสมที่สุดสำหรับแอปพลิเคชันของคุณเองโดยการเลือกและเปรียบเทียบชุดค่าผสมต่างๆ 1: ต้องการ Python 2.6 หรือใหม่กว่า
สนับสนุนcrc-8
รูปแบบแต่ยังสนับสนุนcrc-5
, crc-16
และcrc-32
หมู่คนอื่น ๆ สำหรับขั้นตอนวิธีการจะสนับสนุนbit-by-bit
, และbit-by-bit-fast
table-driven
ตัวอย่างเช่น (ดาวน์โหลดไฟล์เก็บถาวร):
$ 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
คุณสามารถทำสิ่งที่ขี้ขลาดเช่นระบุโดยใช้การค้นหาแบบคู่แทะ (ด้วยตารางการค้นหา 16 ไบต์) แทนการค้นหาแบบไบต์เดียวด้วยตารางการค้นหา 256 ไบต์
ตัวอย่างเช่น (การโคลนที่เก็บ 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
ด้วยข้อ จำกัด ด้านหน่วยความจำและความเร็วตัวเลือกนี้อาจเป็นวิธีที่ดีที่สุดในการกำหนดความเร็วและขนาดของโค้ด วิธีเดียวที่จะแน่ใจได้ว่าจะเป็นเกณฑ์มาตรฐาน
pycrcเก็บคอมไพล์อยู่บนGitHubเป็นอยู่ของตนติดตามปัญหาแต่ก็ยังสามารถดาวน์โหลดได้จากSourceForge