我爲製藥公司開發了CRM。在創建報告時,我獲得了6000-8000個醫生記錄。在那我做了一些計算。需要邏輯和性能增強解決方案
爲此,我在記錄列表中定義了一個for循環。也有內循環。所以我的迭代次數在增加。大約6000 * 16 * 2 = 3,12,000。
顯然需要很多時間。所以請幫我縮小這個過程。
我爲製藥公司開發了CRM。在創建報告時,我獲得了6000-8000個醫生記錄。在那我做了一些計算。需要邏輯和性能增強解決方案
爲此,我在記錄列表中定義了一個for循環。也有內循環。所以我的迭代次數在增加。大約6000 * 16 * 2 = 3,12,000。
顯然需要很多時間。所以請幫我縮小這個過程。
你看過並行處理嗎?只要您的記錄不是很大,那麼8000條記錄就不那麼重要了。
public class Doctor
{
public int Id;
public string Name;
public int ImportantValue;
}
class Program
{
static void Main(string[] args)
{
var doctors = Builder<Doctor>.CreateListOfSize(8000).Build();
Parallel.ForEach(doctors, doctor => {
// Inner loop 1
for(int i = 0; i < 16; i++)
{
// do stuff in inner loop 1
}
// Inner loop 2
for (int i = 0; i < 16; i++)
{
// do stuff in inner loop 1
}
});
}
利用的Parallel.For()你基本上可以通過將每個對象要在列表中一個單獨的線程顯著加快你的處理。
正如評論者所說,不可能在不知道你現在在做什麼的情況下更具體地回答你的問題。它也可能是你需要的只是在你的代碼中做一些任務/等待的東西來顯着加快速度。
底線:8000條記錄中的任何東西在今天的電腦中都不是很多:)
我的實際過程就是這樣。從日期到目前爲止,我得到一個醫生名單,我必須計算日期範圍內指定的每個月的一些數字。後來我必須爲此創建一個Excel表格。 –
在那裏有什麼問題嗎? –
顯示一些虛擬代碼..你如何設計迭代..以便人們可以幫助你.. – Moumit
你使用的是什麼DBMS?它是傳統的ASP還是MVC? 「做一些計算」是什麼意思?究竟是什麼?你的代碼在哪裏,你想做得更好? – Khazratbek