Landscape トップページ | < 前の日 2005-11-29 2005-11-30 次の日 2005-12-01 >

Landscape - エンジニアのメモ 2005-11-30

C# の StringBuilder と += による文字列連結の速度比較


* C# の StringBuilder と += による文字列連結の速度比較

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net] [C#]

C# string  +=  StringBuilder 使string 

StringBuilder 使??

- 




using System;
using System.Text;

namespace ConsoleApplication1
{
    /// <summary>
    /// Class1 
    /// </summary>
    class Class1
    {
        /// <summary>
        /// 
        /// </summary>
        [STAThread]
        static void Main(string[] args) {

            int times = 100000;
            Console.WriteLine("{0:d} times loop.", times);

            DateTime start_str = DateTime.Now;
            string str = string.Empty;
            for (int i = 0; i < times; i++) {
                str += i.ToString();
            }
            Console.WriteLine("String += : " + (DateTime.Now - start_str).ToString());


            DateTime start_str_builder_default = DateTime.Now;
            System.Text.StringBuilder sb_default = new System.Text.StringBuilder();
            for (int i = 0; i < times; i++) {
                sb_default.Append(i);
            }
            Console.WriteLine("StringBuilder: " + (DateTime.Now - start_str_builder_default).ToString());
        }
    }
}


 FMV-E600 Celeron 1.7GHz 512MB Memory
Visual Studio 2003 C# 
Debug CTRL + F5 

- 

times 3


1000 times loop.
String += : 00:00:00.0156250
StringBuilder: 00:00:00

StringBuilder 使15?1000


10000 times loop.
String += : 00:00:01.8125000
StringBuilder: 00:00:00.0156250




100000 times loop.
String += : 00:05:20.5000000
StringBuilder: 00:00:00.0781250

+= StringBuilder 

StringBuilder 使使 StringBuilder StringBuilder += 

 +=  StringBuilder 

- StringBuilder 

StringBuilder 

使
 1, 8, 64, 256, 1024, 8192, 16384, 65536, 16777216 16


using System;
using System.Text;

namespace ConsoleApplication1
{
    /// <summary>
    /// Class1 
    /// </summary>
    class Class1 {
        /// <summary>
        /// 
        /// </summary>
        [STAThread]
        static void Main(string[] args) {

            int times = 1000000;
            Console.WriteLine("{0:d} times loop.", times);

            DateTime start_str_builder_default = DateTime.Now;
            System.Text.StringBuilder sb_default = new System.Text.StringBuilder();
            for (int i = 0; i < times; i++) {
                sb_default.Append(i);
            }
            Console.WriteLine("StringBuilder: Capacity: Default: " + (DateTime.Now - start_str_builder_default).ToString());

            int[] capacity_list = {1, 8, 64, 256, 1024, 8192, 16384, 65536, 16777216};
            foreach (int capacity in capacity_list) {
                DateTime start_str_builder = DateTime.Now;
                System.Text.StringBuilder sb = new System.Text.StringBuilder(capacity);
                for (int i = 0; i < times; i++) {
                    sb.Append(i);
                }
                Console.WriteLine("StringBuilder: Capacity: " + capacity.ToString() + " : " + (DateTime.Now - start_str_builder).ToString());
            }
        }
    }
}


1000000 times loop.
StringBuilder: Capacity: Default: 00:00:00.8437500
StringBuilder: Capacity: 1 : 00:00:00.8281250
StringBuilder: Capacity: 8 : 00:00:00.8593750
StringBuilder: Capacity: 64 : 00:00:00.8281250
StringBuilder: Capacity: 256 : 00:00:00.8593750
StringBuilder: Capacity: 1024 : 00:00:00.9375000
StringBuilder: Capacity: 8192 : 00:00:00.8593750
StringBuilder: Capacity: 16384 : 00:00:00.8750000
StringBuilder: Capacity: 65536 : 00:00:00.8593750
StringBuilder: Capacity: 16777216 : 00:00:00.8125000

F-ZERO 


3000000 times loop.
StringBuilder: Capacity: Default: 00:00:02.7031250
StringBuilder: Capacity: 1 : 00:00:02.6562500
StringBuilder: Capacity: 8 : 00:00:02.7968750
StringBuilder: Capacity: 64 : 00:00:02.8437500
StringBuilder: Capacity: 256 : 00:00:02.9687500
StringBuilder: Capacity: 1024 : 00:00:02.8437500
StringBuilder: Capacity: 8192 : 00:00:02.9687500
StringBuilder: Capacity: 16384 : 00:00:02.8593750
StringBuilder: Capacity: 65536 : 00:00:02.9687500
StringBuilder: Capacity: 16777216 : 00:00:02.9062500

512MB 使

 +=  StringBuilder 使 StringBuilder 


 (1029)


 ()

 ()



 () 

.net (57)
2ch (19)
amazon (5)
Apache (22)
bash (13)
Bookmarklet (9)
C# (45)
chalow (18)
ChangeLog  (20)
coLinux (2)
CSS (5)
Delphi (5)
DVD (6)
Excel (1)
F-ZERO (4)
FF12 (31)
ftp (8)
Google (21)
gpg (7)
HTML (19)
http (19)
IE(10)
IIS (4)
iPod (2)
JavaScript (14)
Linux (63)
MCP (6)
Mozilla (14)
MS SQL Server (30)
MySQL (4)
Namazu (3)
PC(48)
Perl (58)
PHP (2)
Postgres (36)
proftpd (2)
qmail (1)
RFC (4)
RSS (33)
Ruby (15)
samba (3)
sonic64.com (6)
SQL (15)
Squid (3)
ssh (7)
Subversion (3)
unix (31)
VSS (2)
Windows (34)
winny (9)
XML (9)
xyzzy (17)
  (19)
 (5)
 (13)
 (9)
 (2)
 (120)
 (18)
2(8)
 (9)
 (21)
 (2)
 (30)
 (17)
 (14)
DS(3)
 (26)
 (116)
 (11)
 (59)
 (3)
 (13)
 (7)
 (4)
 (30)
 (17)
簿 (8)
 (32)
 (9)
30
2007-04-23 (Mon)
PC: PCEQUIUM 5170
2007-03-07 (Wed)
Mozilla: Mozilla Thunderbird 
2007-02-27 (Tue)
: Excel: Excel 
2007-01-17 (Wed)
: 
2007-01-15 (Mon)
:  19
2007-01-14 (Sun)
: : 
2007-01-08 (Mon)
: 
2006-12-01 (Fri)
: DVD: 0083 
2006-11-22 (Wed)
: T
2006-11-20 (Mon)
: OpenOffice.org Calc 
2006-11-19 (Sun)
: : 1% P-One 
2006-09-30 (Sat)
:  
2006-08-29 (Tue)
MS SQL Server: SQL: MS SQL Server DB SQL 
2006-08-04 (Fri)
: 84 - Operation Raystorm
2006-07-27 (Thu)
: : 157
2006-07-23 (Sun)
: : 200cm100cm45
2006-07-17 (Mon)
: 
2006-07-10 (Mon)
: : 
2006-07-06 (Thu)
: : 
2006-07-03 (Mon)
: : 
2006-06-29 (Thu)
:  
2006-06-28 (Wed)
: http: HTML: robots.txt 
2006-06-27 (Tue)
: Google:  - Google  
2006-06-25 (Sun)
:  Σ 
2006-06-19 (Mon)
: PC: BUFFALO LSW-TX-24NSR 24
2006-06-18 (Sun)
: FF12: 
2006-06-15 (Thu)
Windows: unix: cygrunsrv  CPU  Windows Update 
2006-06-11 (Sun)
: : 312
2006-06-01 (Thu)
: 簿: GT M+ MRC 使
2006-05-30 (Tue)
: 




 







2 proxy 

Planet .NET Japan


RSS



RSS RSS ()

RSS full archive  RSS ()





Powered by


© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。