因為我本還是個初心者,所以只寫一點我想到的測字串寫入時間的方法

 

代瑪在此,用主控台ConsoleApplication測試

 

  public static void Main(string[] args)
        {
            //檔案路徑
            string FilePath =
                @"C:\Users\winnie\Desktop\Orinew.txt";
            //清空檔案內容以便測試最後寫入字串後檔案大小
            File.WriteAllText(FilePath, "");
            //開始計時
            DateTime time_start = DateTime.Now;//計時開始 取得目前時間
            //測試字串
            string h = "kkkkkkkkkkkkkkkkkkkkkkkkkkkk\n";

            using (StreamWriter writer = new StreamWriter(FilePath, true, Encoding.UTF8))
            {
                //多次執行模仿緩衝區(不確定這樣講對不對)的效果,因為發現一次累加太多次字串速度比較慢
                for (int d = 0; d < 10000; d++)
                {
                    string Str = "";
                    for (int i = 0; i < 100; i++)
                    {//累加字串
                        Str += h;
                    }
                    //為方便看見程式執行進度而寫
                    Console.WriteLine("hit");
                    //將累積字串寫入檔案
                    writer.Write(Str);
                }

            }
            
            DateTime time_end = DateTime.Now;//計時結束 取得目前時間
            //後面的時間減前面的時間後 轉型成TimeSpan即可印出時間差
            string result2 = ((TimeSpan)(time_end - time_start)).TotalMilliseconds.ToString();

            Console.WriteLine(result2);

            Console.Read();
        }

 

跑完就會印出花多久,檔案大小多大就去檔案那邊右鍵內容看一下

 

這個測試程式碼寫入字串的總行數是將兩個for裡的數字相乘

                for (int d = 0; d < 10000; d++)
                {
                    string Str = "";
                    for (int i = 0; i < 100; i++)
                    {//累加字串
                        Str += h;
                    }
                    //為方便看見程式執行進度而寫
                    Console.WriteLine("hit");
                    //將累積字串寫入檔案
                    writer.Write(Str);
                }

 

也就是10000x100 就是一百萬,這邊是可以改的,有兩種改法

 

第一個是保持兩者相乘等於同一個值

以一百萬為例,可以用外迴圈5000x內200 

或外20000內50等等調整,我測試試發現內迴圈過大或過小好像都會變慢,滿有趣的

 

第二個當然就是將相乘的值增加或減少,這樣子最後寫入檔案的大小也會變,

例如提高到兩百萬,時間通常會變長檔案也會變大

 

我想到的大概是這樣子

 

 

 

arrow
arrow
    全站熱搜

    olivermode 發表在 痞客邦 留言(0) 人氣()