C#和C++的速度大比拼(二) (轉)
在這一部分,我們將用C++和程式碼來測試兩者對資料庫的存取和處理。方法是對同一個資料庫表進行操作。表結構如下:
CREATE TABLE testtable ( col1 INTEGER, col2 VARCHAR(50), PRIMARY KEY (col1) )
測試將分三個部分,第一部分和第三部分集中對資料處理,第二部分集中對資料存取。資料處理和資料存取的測試結果是分開呈現的。 下面是資料存取和處理的C++程式碼:
程式碼五:.cpp #import "msado15.dll" no_namespace rename("EOF", "EndOfFile") #include
程式碼六:db2.cs
using System;
using System.Data;
using System.Data.OleDb;
using System.Text;
namespace Db
{
class Class1
{
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine(" col1="
Execute(sql, &RecordsEffected, adCmdText);
};
conptr->Close();
dw2 = ::GetTickCount();
std::cout 下表為執行十次,每次100行記錄的結果 表三:資料庫測試結果 序號 C++(~毫秒) C#(~毫秒) 程式碼七:xml.cpp #import 程式碼七:xml.cs using System; using System.Xml; namespace xml2 { class Class1 { static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Usage:txml [filename]"); return; } long dt = DateTime.Now.Ticks; for (int i=0;i<100;i++) { XmlDocument doc = new XmlDocument(); doc.Load(args[0]); } long dt2 = DateTime.Now.Ticks; System.Console.WriteLine("Milliseconds = {0}", (dt2-dt)/10000); } } }
這個結果讓人十分驚訝。在這裡的表現是令人滿意的。一般來說下降百分之二十五的是可以忍受的。這說明.NET在這裡是贏家。
效能測試
XML是資料處理領域的最新技術。許多人對用C#程式碼和Visaul C++程式碼處理或解析XML的效能很感興趣。
下面是一段存取和處理XML的C++程式碼:
表四:XML 測試結果
序號 C++(~毫秒) C#(~毫秒) 1 241 1111 2 170 841 3 161 841 4 170 861 5 160 861 6 171 851 7 170 841 8 160 831 9 160 841 10 170 851 平均值 203 873
這個結果又讓人驚訝一次。很難相信.NET XML類的執行比同等的類要慢四至五倍。為什麼會發生這種情況呢?也許只有的兄弟才知道。也許微軟想要把.NET類設計成在某一方面與眾不同。如果不是這樣,那麼微軟的那幫傢伙應該好好一下他們的.NET XML類。
如果你是一個 服務和應用的開發人員,當把.NET用於需要很高效能的應用時,尤其是XML服務時,應三思而行。
總結
需要強調的一點是.NET框架還是一種新的技術。因此,在這個框架中需要做的事情還有很多,它還需要不斷最佳化。另外,這裡對.NET的效能測試也很膚淺,以.NET所擁有的豐富內涵來說,用以上四個方面的測試以及簡陋的文章來說明它的快或者慢是遠遠不夠的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-977190/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C# 和 C++ (轉)C#C++
- [譯] Kotlin VS Java:編譯速度大比拼KotlinJava編譯
- Prefer C++ (二) (轉)C++
- (轉貼) C++,C#,Java功能比較 (.NET) (C#) (C/C++)C++C#Java
- 如何分析和提高(C/C++)程式的編譯速度?C++編譯
- C++、Java/C#之比較 (轉)C++JavaC#
- C#速成(之二) (轉)C#
- 聊聊 C++ 和 C# 中的 lambda 玩法C++C#
- C++模板的定製二:定製C++類 (轉)C++
- [C++]類和物件(二)C++物件
- 在C#中使用C/C++寫的DLL (轉)C#C++
- Linux認證大比拼(轉)Linux
- c#簡單實現二維陣列和二維陣列列表List<>的轉置C#陣列
- C# 和 API (轉)C#API
- 學習C++(二) 書的誘惑 (轉)C++
- C#和.Net的初步研究 (轉)C#
- 【實測】Python 和 C++ 下字串查詢的速度對比PythonC++字串
- Google Drive和Dropbox大比拼Go
- [C++]指標和引用(二)C++指標
- 控制遊戲的速度 (轉)遊戲
- 多媒體和網路時代中,C++,Delphi,Java,還是C#? (轉)C++Java
- 機器學習和深度學習的最佳框架大比拼機器學習深度學習框架
- 如何在C#中模擬C++的聯合(Union)?[C#, C++] How To Simulate C++ Union In C#?C#C++
- 從C++的Return Value Optimization (RVO)到C#的value type (轉)C++C#
- C#中各種Lock的速度比較C#
- 詳解C#特性和反射(二)C#反射
- Java和C++的基本差異(轉)JavaC++
- 【底層】 C++和C#的編譯方式差異 / AOT和JITC++C#編譯
- Linux 叢集系統大比拼(轉)Linux
- C#中的執行緒二(BeginInvoke和Invoke)C#執行緒
- 如何加快C++程式碼的編譯速度C++編譯
- DircetDraw c/c++ 使用指導(二) (轉)C++
- C#呼叫 C++的DLLC#C++
- 【轉載】C++ ,C#資料型別對照C++C#資料型別
- C++和C#物件初始化順序C++C#物件
- 【轉】C#中virtual和abstract的區別C#
- [轉]說說C#的async和awaitC#AI
- C#演算法----(二)插入排序 (轉)C#演算法排序