یه نفر اومده سراغ یکی از سادهترین چیزهایی که توی نرمافزارها مدام اتفاق میافته: تبدیل عدد به متن. مثلاً اینکه عدد 123456 بشه «123456». کاری که معمولاً برنامهها انجام میدن اینه که عدد رو چند بار تقسیم میکنن، رقمها رو یکییکی درمیارن، یا از یهسری جدول آماده کمک میگیرن. اما ایدهی این مقاله این بوده که بیایم این مسیر قدیمی رو دور بزنیم. عدد رو به تکههای ۸ رقمی شکسته، بعد با قابلیتهای جدید پردازنده، چندتا رقم رو همزمان حساب کرده؛ یعنی بهجای اینکه CPU رقمها رو دونهدونه بسازه، همه رو موازی جلو برده. برای این کار هم از AVX-512 و ضربهای سریع استفاده کرده تا تقسیمهای سنگین تا حد زیادی حذف بشن. جالبتر اینکه الگوریتم قبل از اجرا یه نمونهگیری کوچیک هم میکنه تا بفهمه جنس عددها شبیه همه یا نه، بعد خودش مسیر سریعتر رو انتخاب میکنه. نتیجهاش؟ یه کاری که خیلی معمولی به نظر میرسه، توی بعضی حالتها زیر دو نانوثانیه انجام میشه.
https://onlinelibrary.wiley.com/doi/10.1002/spe.70079
@codehalics | کدهالیک
Post #679
730