中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

まぁもちろん

sealedの効用なんてパフォーマンス面で出るわけも無く・・・

実験しても誤差レベルだしなぁ。

それよりも継承リストを追っかけさせる作業が以外に重たい作業であることがびっくり。

ref class CXX1 sealed
{
public:
 virtual void Output()
 {

 }
};
/*
ref class CXX2 : CXX1 {public: virtual void Output() override { }};
ref class CXX3 : CXX2 {public: virtual void Output() override { }};
ref class CXX4 : CXX3 {public: virtual void Output() override { }};
ref class CXX5 : CXX4 {public: virtual void Output() override { }};
ref class CXX6 : CXX5 {public: virtual void Output() override { }};
ref class CXX7 : CXX6 {public: virtual void Output() override { }};
ref class CXX8 : CXX7 {public: virtual void Output() override { }};
ref class CXX9 : CXX8 {public: virtual void Output() override { }};
ref class  CXX10 sealed: CXX9   {public: virtual void Output() override { }};
*/

int main()
{
 System::Diagnostics::Stopwatch st;
 for ( int atk = 0; atk < 30; atk++)
 {
  st.Reset();
  st.Start();
  for ( int i = 0; i < 100000000; i++ )
  {
   CXX1^ tmp = gcnew CXX1();
   tmp->Output();
  }
  st.Stop();
  System::Console::WriteLine(st.ElapsedMilliseconds); 
 }

 System::Console::ReadLine();
}

10個の継承リストを追っかけさせる 1個の実体
non-sealed sealed sealed
1286 1293 957
1346 1393 972
1349 1385 1014
1344 1372 1006
1345 1385 1001
1345 1382 996
1355 1366 1008
1293 1289 1003
1261 1267 1006
1263 1275 992
1262 1290 929
1268 1281 929
1262 1270 928
1264 1277 928
1261 1268 930
1263 1270 930
1262 1262 929
1260 1258 927
1261 1276 929
1262 1264 929
1259 1259 929
1261 1260 930
1261 1259 941
1262 1257 940
1262 1260 929
1261 1259 929
1259 1261 937
1260 1260 955
1261 1265 952
1262 1260 938
1280.666667 1290.76667 954.1

30%増しくらい10継承を追いかけるのはコストがかかっています。

投稿日時 : 2006年3月15日 0:05

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント