C# การใช้วิธีการขยายสำหรับประเภทข้อมูล BigInteger เช่นการสกัดรูท NTH สร้างค่าสุ่มและการยกระดับ โดย Nikolai Thesquid
ฉันยินดีที่จะรวมคำขอดึงของคุณเพื่อปรับปรุงประสิทธิภาพการคำนวณ แม้ว่าการปรับปรุงจะส่งผลกระทบต่อแต่ละกรณีจากช่วงของค่า
ในการใช้ส่วนขยายเหล่านี้คุณจะต้องเพิ่มรหัสของคุณตามเนมสเปซ: System.Numerics และ TheSquid.Numerics.Extensions
C# การใช้วิธีการขยายเพื่อคำนวณรูท NTH อย่างรวดเร็ว (รวมถึงสแควร์รูท) สำหรับค่า BigInteger
โดยพื้นฐานแล้วคุณสามารถคัดลอกคลาส nthrootextension จากแหล่งเก็บข้อมูลแหล่งที่มาไปยังโครงการของคุณ อีกทางเลือกหนึ่งคือการเพิ่มแพ็คเกจ thesquid.numerics.extensions จากที่เก็บ Nuget ไปยังการพึ่งพาโครงการของคุณ
ตัวอย่างการใช้งาน:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var root = source . NthRoot ( exponent , out var isExactResult ) ;คุณสามารถเริ่มการทดสอบแบบสุ่ม NTHROOT ได้ทันทีหลังจากที่เก็บโคลนและสร้างโซลูชัน คุณต้องเรียกใช้การสร้างการทดสอบและสร้างโซลูชันใหม่ก่อนเริ่มการทดสอบรูทความเร็ว Nth
วิธีการขยายใช้อัลกอริธึมการคำนวณรูทสองอัลกอริทึม: วิธีการของนิวตันที่รู้จักกันดีและวิธีหลักโดยหลัก เมื่อระดับของรูทเพิ่มขึ้นการคำนวณโดยวิธีการของนิวตันจะช้าลงและวิธีหลักต่อตัวเลขจะเร่งความเร็ว ด้วยลำดับของรูทรูทค่า 100,000 หลักทศนิยมการพึ่งพาความเร็วในการคำนวณในระดับของรากมีดังนี้:

การใช้วิธีการขยาย C# เพื่อสร้างค่า BigInteger แบบสุ่มภายในช่วงที่ระบุ
โดยพื้นฐานแล้วคุณสามารถคัดลอกคลาส NextBigInteGeRextension จากแหล่งเก็บข้อมูลแหล่งที่มาไปยังโครงการของคุณ อีกทางเลือกหนึ่งคือการเพิ่มแพ็คเกจ thesquid.numerics.extensions จากที่เก็บ Nuget ไปยังการพึ่งพาโครงการของคุณ
ตัวอย่างการใช้งาน:
var min = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var max = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var random = new Random ( DateTime . Now . Millisecond ) . NextBigInteger ( min , max ) ;คุณสามารถเริ่มต้นการทดสอบแบบสุ่มสำหรับวิธีการขยาย NextBiginteger โดยใช้คลาส NextBigInteGeRextensionTests จาก Project Thesquid.numerics.extensions.tests ทันทีหลังจากที่เก็บโคลนและการแก้ปัญหาการสร้าง
วิธีการขยายสำหรับคลาสระบบสุ่ม วิธีการใช้อินสแตนซ์ของคลาสสุ่มเพื่อสร้างอาร์เรย์ของไบต์สุ่ม
C# การใช้วิธีการขยายสำหรับการคำนวณพลังงานที่เร็วขึ้นด้วยพารามิเตอร์ซ้ำโดยใช้แคช
โดยพื้นฐานแล้วคุณสามารถคัดลอกคลาส Powcachedextension จากแหล่งที่เก็บต้นทางไปยังโครงการของคุณ อีกทางเลือกหนึ่งคือการเพิ่มแพ็คเกจ thesquid.numerics.extensions จากที่เก็บ Nuget ไปยังการพึ่งพาโครงการของคุณ
ตัวอย่างการใช้งาน:
var source = BigInteger . Parse ( Console . ReadLine ( ) ) ;
var exponent = int . Parse ( Console . ReadLine ( ) ) ;
var power = source . PowCached ( exponent ) ; แคช POW ล้างตัวเองโดยอัตโนมัติ ประการแรกหากเกิดข้อผิดพลาดจากหน่วยความจำเกิดขึ้นเมื่อคำนวณพลังงาน จากนั้นแคชจะถูกล้างอย่างสมบูรณ์ ประการที่สองหากจำนวนองค์ประกอบในแคชถึงจำนวน int.MaxValue จากนั้นแคชจะถูกล้างออกครึ่งหนึ่ง นอกจากนี้คุณสามารถตรวจสอบจำนวนองค์ประกอบในแคชและล้างด้วยตนเองโดยทิ้งจำนวนองค์ประกอบที่ระบุไว้
ตัวอย่างการใช้งาน:
var available = PowCachedExtension . ItemsInCache ;
var threshold = long . Parse ( Console . ReadLine ( ) ) ;
if ( threshold < available ) PowCachedExtension . ShrinkCacheData ( threshold ) ;คุณสามารถเริ่มต้นการทดสอบแบบสุ่มสำหรับวิธีการขยาย POWCACHED โดยใช้คลาส POWCACHEDEXTENSIONTESTS จาก Project Thesquid.numerics.extensions.tests ทันทีหลังจากที่เก็บโคลนและการแก้ปัญหาการสร้าง
การเร่งความเร็วทำได้โดยการจดจำผลลัพธ์ขององศาการคำนวณเช่นเดียวกับการจดจำผลลัพธ์ระดับกลางที่ได้รับจากความคืบหน้าการคำนวณ ด้วยค่าชั้นใต้ดินแบบสุ่มในช่วงตั้งแต่ 0 ถึง 1,000 ค่าเลขชี้กำลังแบบสุ่มในช่วงตั้งแต่ 0 ถึง 1,000 และการวนซ้ำจะเพิ่มขึ้นถึง 2000000 การพึ่งพาความเร็วในการคำนวณในการเติมแคชมีดังนี้:
