ورود

View Full Version : حرفه ای: تولید تعداد دو میلیون کد قرعه کشی منحصر به فرد



سعید کشاورز
یک شنبه 18 آذر 1397, 09:38 صبح
سلام دوستان
برای یک سیستم قرعه کشی نیاز به تولید دو میلیون کد دارم
زمانی که از حلقه For استفاده میکنم و با Guid کد ها رو تولید میکنم ( البته فقط 8 رقم اولش رو میگیرم) به ازای 1000 بار چرخش حلقه تقریبا 1 دقیقه سیستم زمان نیاز داره.
کد هارو داخل یه Hashset میریزم که اگه مقدار تکراری هم داشت داخل لیست قرار نگیره. در نهایت اون لیست رو به DbContext ، توسط متد Addrange اضافه میکنم.
وقتی حلقه رو به جای 1000 روی 100000 ( صد هزار ) تنظیم میکنه مصرف CPU به 100% میرسه و به حالت انفجار میره:لبخند:

از ترد هم که استفاده کنم بازم همین موضوع هست.
حالا تولید حلقه یک طرف، ذخیره کردنش توی دیتایس هم یک طرف.
اینم بگم هاست اشتراکی داریم برای این کار و فکر کنم اگر این دستورات رو روی سرور اجرا کنم کلا سرور بترکه.

بهترین روش برای تولید این کدها چیه؟

Moien Tajik
یک شنبه 18 آذر 1397, 10:37 صبح
برای تولید 100000 تا GUID بنده به این صورت نوشتم که فقط 88 میلی ثانیه طول کشید :
149398

برای insert کردن هم میتونید از Bulk Insert (https://entityframework-extensions.net/bulk-insert) استفاده کنید.

سعید کشاورز
یک شنبه 18 آذر 1397, 11:53 صبح
معین جان عالی بود.
عجب چیز غولیه این BulkInsert
مشکلم بر طرف شد.

rahmatipoor
دوشنبه 19 آذر 1397, 11:29 صبح
معین جان عالی بود.
عجب چیز غولیه این BulkInsert
مشکلم بر طرف شد.

سلام
این bulk insert که ظاهرا باید خریداری بشه. شما خریدید؟

سعید کشاورز
دوشنبه 19 آذر 1397, 12:23 عصر
والا من از Nuget نصب کردم بدون مشکل کار کرد

rahmatipoor
دوشنبه 19 آذر 1397, 12:40 عصر
این صفحه رو ببیند لیست قیمت توی سایتشونه

https://entityframework-extensions.net/pricing

البته ظاهرا نسخه های جدید که میدن تا پایان هر ماه میشه تریال استفاده کرد.

The latest version always contains a trial that expires at the end of the month. You can extend your trial for several months by downloading the latest version at the begining of every month.

این رو هم توی سایت ناگت گفته
This library is NOT FREE. Trial period always stops at the end of the month.