using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleTest
{
class Program
{
static void Main(string[] args)
{
Stopwatch sw1 = new Stopwatch();
sw1.Start();
UseStringBuilderClass();
sw1.Stop();
Console.WriteLine("UseStringBuilderClass " + sw1.ElapsedMilliseconds + " ms.");
Stopwatch sw2 = new Stopwatch();
sw2.Start();
NotUseStringBuilderClass();
sw2.Stop();
Console.WriteLine("NotUseStringBuilderClass " + sw2.ElapsedMilliseconds + " ms.");
Console.ReadKey();
}
static void UseStringBuilderClass()
{
StringBuilder str = new StringBuilder();
for (int i = 0; i < 100000; i++) str.Append(i);
}
static void NotUseStringBuilderClass()
{
string str = "";
for (int i = 0; i < 100000; i++) str += i;
}
}
}
จากผลลัพธ์จะเห็นว่าการใช้คลาส StringBuilder มีความไวกว่าการต่อ string ธรรมดา แต่ถ้าในกรณีที่เราไม่ได้ต่อ string จำนวนมากๆแล้ว ก็ไม่จำเป็นที่จะต้องใช้คลาสนี้ก็ได้ครับเขียนแบบธรรมดาไปเลยง่ายกว่า การเลือกใช้ต้องขึ้นอยู่กับว่าข้อมูลของเราว่ามีมากแค่ไหน
21 August 2015
C# StringBuilder เหนือกว่าต่อ string ธรรมดา
เวลาเขียนโปรแกรมแล้วมีการต่อ string หลายๆคนอาจจะคุ้นชินกับการเขียนแบบ text = text + newText หรือ text += newText ส่วนตัวผมจะเขียนแบบหลังซะส่วนใหญ่ แต่ถ้าเวลาที่เราต้องเจอเคสที่ต้องต่อ string จำนวนมากๆเข้า ก็จะเริ่มรู้สึกว่าโปรแกรมเราทำงานช้าลง แต่มันยังมีอีกวิธีที่บางคนอาจจะยังไม่ทราบหรือเคยเห็นแล้วแต่ก็ไม่ได้สนใจอะไร นั่นคือการใช้คลาส StringBuilder คราวนี้ผมจะลองเขียนเปรียบเทียบระหว่างการใช้คลาส StringBuilder กับการต่อ string ธรรมดาที่เราคุ้นชินโดยจะมีการจับเวลาของการทำงานในแต่ละแบบ ดัง code ตัวอย่างครับ
