ปรับปรุงประสิทธิภาพของ atoi ()
ตามคำแนะนำของ Andrei Alexandrescu ในการบรรยายของเขา "การเขียนรหัสเร็ว" ในการประชุม Code :: Dive 2015 ฉันพยายามที่จะให้เทียบเท่ากับ ATOI () แต่เพิ่มความเข้ากันได้แบบย้อนหลัง
คุณมีรหัสเดิมโดยใช้ atoi () ที่คุณต้องการปรับปรุงประสิทธิภาพการแยกสตริง มันจะง่ายมากที่จะทำสตริงพิเศษ-> int parsing รูทีนหากรูปแบบของอินพุตได้รับการรับประกันเช่นแต่ละหมายเลขไม่ได้ลงนามและยาวสี่หลัก อย่างไรก็ตามมีหลายกรณีที่สตริงที่ส่งไปยัง Atoi () มาจากไคลเอนต์ภายนอกดังนั้นคุณจึงไม่สามารถสันนิษฐานได้ว่าสตริงไม่มีช่องว่างเริ่มต้นหรือรวมถึงอักขระที่ไม่ใช่ตัวเลขในตอนท้าย
ฟังก์ชั่น atoi () ทำดังต่อไปนี้:
นี่คือผลลัพธ์สำหรับการกำหนดค่าตัวเลือกระบบ/คอมไพเลอร์/คอมไพเลอร์หนึ่งตัว (การเพิ่มประสิทธิภาพเต็มรูปแบบ)
แผนภูมิเวลา CPU:
แผนภูมิเวลาที่ผ่านไป:
การอ้างอิง C ++