为什么我的Time算法如此慢 - 有谁能告诉我为什么? [英] Why is my Time algorithm so slow - Can anyone tell me why?

查看:58
本文介绍了为什么我的Time算法如此慢 - 有谁能告诉我为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




我是C#的新手。我有同时用C ++编写的调度程序和

它比我在C#中的版本快5倍。

为什么它这么慢我认为C#只是比C ++慢一点?

我做错了什么?


这是我的代码:


使用系统;


class cMain


{


public static int Main()


{


int [,] TimeSchedule = new int [GlobalValues.kNoDays + 1,7]


{


{0,0,0,0,0,0,0},

{1,1,2,3 ,4,5,49},


{2,23,27,36,38,45,47},


{3 ,23,33,35,42,44,48},


{4,24,29,35,39,40,46},


{5,22,28,34,40,44,45},

{6,1,2,6,11,17,20},


{7,1,2,7,10,16,21},


{8,1,2,8,13,15 ,18},


{9,23,26,34,36,41,47},


{10,1,2 ,9,12,14,19},


{11,2 3,28,31,35,37,42},


{12,25,34,37,40,45,48},


{13,32,33,44,46,47,48},

{14,24,25,26,27,37,48},

{15,24,29,30,32,40,42},


{16,1,3,6,10,15, 19},


{17,1,3,7,11,14,18},


{18,22,23, 25,35,42,43},


{19,1,3,8,12,17,21},


{ 20,31,33,34,40,43,45},

{21,30,33,36,39,44,48},

{22,25,29,37,38,41,48},


{23,1,3,9,13,16,20},


{24,1,4,6,13,14,21},


{25,24,25,28,33, 41,45},


{26,22,26,31,38,40,48},


{27,1, 4,7,12,15,20},


{28,24,26,27,31,33,43},


{29,23,27,32,39,40,41},

{30,1,4,8,11,16,19},
< br $>
{31,22,25,32,43,46,47},


{32,22,33,37,39,42,47} ,


{33,1,4,9,10,17,18},


{3 4,27,35,38,39,45,46},


{35,1,5,6,12,16,18},

{36,1,5,7,13,17,19},


{37,1,5,8,10,14,20},


{38,1,5,9,11,15,21},


{39,1,6,7,8, 9,49},


{40,26,29,36,42,45,46},


{41,1, 10,11,12,13,49},


{42,1,14,15,16,17,49},


{43,4,18,19,20,21,49},


{44,28,31,32,37,46,47},
< br $>
{45,22,25,30,36,39,43},


{46,24,37,41,43,44,45} ,


{47,26,34,35,39,41,46},


{48,27,30,32, 38,42,45},


{49,22,24,26,27,28,44},


{50, 23,24,32,34,38,39},


{51,22,32,33,35,36,37},


{52,22,28,29,38,41,44},

{53,28,39,42,43,47,48},

{54,27,30,35,40,41,47},


{55,2,3,6,7,12, 13},


{56,27,36,40,41,42,46},


{57,2,3,8,9,10,11},


{58,28,30,31,36,37,39},


{59,2,3,14,15,20,21},


{60,23,24,29,36,40,47},


{61,29,31,33,38,41,43},


{62,2,3,16,17 ,18,19},


{63,26,29,30,35,45,47},


{64,22 ,25,27,29,34,43},


{65,2,4,6,9,15,16},


{66,26,37,38,40,43,44},

{67,26,30,32,34,41,42},


{68,23,30,31,33,43,46},


{69,25,31,35,39,44,47 },


{70,2,4,7,8,14,17},


{71,2,4,10 ,13,19,20},


{72,2,4,11,12,18,21},


{73 ,24,34,36,38,42,46},


{74,2,5,6,8,19,21},


{75,2,5,7,9,18,20},

{76,22,24,31,41,45,48},


{77,25,26,28,33,38,40},


{78,2,5,10,12,15 ,17},


{79,2,5,11,13,14,16},


{80,2,6,10,14,18,49},

{81,2,7,11,15,19,49},


{82,2,8,12,16,20,49},

{83,2,9,13,17,21,49},


{84,23,26,29,32,39,45},


{85,24,30,34,35 ,38,47},


{86,3,4,6,8,18,20},


{87,3 ,4,7,9,19,21},


{88,3,4,10,12,14,16},


{89,3,4,11,13,15,17},


{90,3,5,6,9,14,17},


{91,3,5,7,8,15,16},


{92,27,28,29,31,34,37 },


{93,23,25,30,37,46,48},


{94,3,5,10 ,13,18,21},

{95,3,5,11,12,19,20},


{96 ,3,6,11,16,21,49},


{97,3,7,10,17,20,49},


{98,6,7,14,16,19,20},


{99,3,8,13,14,19,49},


{100,3,9,12,15,18,49},


{101,6,7,15,17,18 ,21},


{102,6,8,10,13,16,17},


{103, 6,8,11,12,14,15},

{104,6,9,10,12,20,21},


{105,6,9,11,13,18,19},


{106,25,31,32,35,36,44},

{107,4,5,8,9,12,13},


{108,4,5,14,15,18, 19},


{109,4,5,16,17,20,21},


{110,4,6, 12,17,19,49},


{111,4,7,13,16,18,49},


{ 112,7,8,10,12,18,19},

{113,7,8,11,13,20,21},

{114,7,9,10,13,14,15},

{115,7,9,11,12,16,17},< br $>

{116,8,9,14,16,18,21},


{117,8,9,15,17, 19,20},


{118,10,11,14,17,19,21},


{119,10, 11,15,16,18,20},

{120,12,13,14,17,18,20},


{121,12,13,15,16,19,21},

{122,4,8,10,15,21,49},
< br $>
{123,4,9,11,14,20,49},


{124,5,6,13,15,20,49} ,


{125,5,7,12,14,21,49},


{126,5,8,1 1,17,18,49},


{127,5,9,10,16,19,49},


{ 128,4,5,6,7,10,11},


{129,22,23,28,30,44,46},

{130,27,29,33,34,44,48},


{131,28,32,36,42,43,48},


{132,25,26,31,40,41,44},


{133,24,28,38,40, 43,48},


{134,28,35,36,43,47,48},


{135,24, 25,31,38,44,45},

{136,26,28,41,43,45,48},


{137,25,28,29,33,44,46},

{138,27,30,31,37,43,44},
< br $> b $ b {139,22,23,25,31,34,48},

{140,23,25,27,28,33,37} ,


{141,22,29,30,31,33,48},


{142,22,34,37, 43,44,46},


{143,25,31,36,42,44,47},


{144, 38,39,40,41,42,47},

{145,22,26,33,37,38,45},


{146,24,27,34,39,42,47},

{147,23,26,32,35,42,45},

{148,28,32,35,39,43,48},


{14 9,23,29,37,43,44,48},


{150,22,27,28,31,46,48},

{151,22,24,33,37,40,41},


{152,25,28,30,33,34,43},< br $>

{153,23,30,34,38,40,46},

{154,26,30,32,36, 39,45},


{155,27,29,34,35,38,41},


{156,26, 29,32,45,46,47},

{157,23,24,27,30,41,46},


{158,23,29,30,36,39,42},

{159,25,31,32,39,42,44},
< br $>
{160,24,32,35,36,38,41},


{161,24,26,27,29,40,45} ,


{162,27,32,34,35,36,40},


{163,23,30,35, 36,46,47}};


for(int lpcnt = 1; LPCNT< = GlobalValues.kNoSeconds; lpcnt ++)

GlobalValues.gaSumWorkDays [lpcnt] = 0;


for(int mm = 1; mm< = GlobalValues.kNoDays; mm ++)


{


GlobalValues.gaWorkDays [1] = TimeSchedule [mm,1];


GlobalValues。 gaWorkDays [2] = TimeSchedule [mm,2];


GlobalValues.gaWorkDays [3] = TimeSchedule [mm,3];


GlobalValues.gaWorkDays [4] = TimeSchedule [mm,4];


GlobalValues.gaWorkDays [5] = TimeSchedule [mm,5];


GlobalValues.gaWorkDays [6] = TimeSchedule [mm,6];


CWeekTime.WeekTime();


}

int lnTotMissingTime = 0;


int t = DateTime.Now.Minute * 60 + DateTime.Now.Second;


Console.WriteLine(" TimeStarted" + t);


lnTotMissingTime = CVerifyMissingTime.VerifyMissingT ime();

Console.WriteLine(" Total) No of Missing Time {0}",lnTotMissingTime);


t = DateTime.Now.Minute * 60 + DateTime.Now.Second;


Console.WriteLine(" Time Ended" + t);


Console.ReadLine();

返回0;


}


}


公共类GlobalValues


{


public const int kNoWeeks = 49;


public const int kNoDays = 163;


public const int kNoSeconds = 18424;


public static int gnSumSeconds = 0;


public static int [] gaWorkDays = new int [7];


public static int [] gaSumWorkDays = new int [kNoSeconds + 1];


public static int [,] gaSeconds = new int [kNoWeeks + 1,4]

{


{0,0,0 ,0},


{1,0,0,0},


{2,1081,0,0},


{3,2116,46,1},

{4,3106,91,2},


{5,4052,135,3},

{6,4955,178,4},


{7 ,5816,220,5},

{8,6636,261,6},


{9,7416,301,7},

{10,8157,340,8},


{11,8860,378,9},

{12,9526,415,10},


{13,10156,451 ,11},


{14,1,10751,486,12},

{15,11312,520,13},


{16,11840,553,14},


{17,12336,585,15},


{18,12801,616,16},


{19,13236,646,17},


{20 ,13642,675,18},

{21,14020,703,19},


{22,14371,730,20 },


{23,14696,756,21},


{24,14996,781,22},


{25,15272,805,23},

{26,15525,828,24},


{27,15756,850,25},

{28,15966,871,26},


{29,16156 ,891,27},

{30,16327,910,28},


{31,16480,928,29},


{32,16616,945,30},

{33,16736,961,31},


{34,16841,976,32},


{35,16932,990,33},


{36,17010,1003 ,34},


{37,17076,1015,35},


{38,17131,1026,36},


{39,17176,1036,37},


{40,17212,1045,38},


{41,17240,1053,39},

{42,17261,1060,40},


{43 ,17276,1066,41},

{44,17286,1071,42},


{45,17292,1075,43 },


{46,17295,1078,44},


{47,17296,1080,45},


{48,0,1081,46},

{49,0,0,47}};


}


类CWeekTime


{


public static int WeekTime()


{


for(int s1 = 1; s1 <= 4; s1 ++)


{


for(int s2 = s1 + 1; s2< = 5; s2 ++)

>
{


for(int s3 = s2 + 1; s3< = 6; s3 ++)


{


GlobalValues.gnSumSeconds = GlobalValues.gaSeconds [GlobalValues.gaWorkDays [s1],1] + GlobalValues.gaSeconds [GlobalValues.gaWorkDays [s2],2] + GlobalValues.gaSeconds [GlobalValues.gaWorkDays [s3 ],3];


GlobalValues.gaSumWorkDays [GlobalValues.gnSumSeconds] = 1;


}


}


}


返回(0);


}


}


class CVerifyMissingTime


{


public static int VerifyMissingTime()

{


int lnSumMissingTime = 0;


for(int xxxLoop = 1; xxxLoop< = 10; xxxLoop ++)


{


lnSumMissingTime = 0;


for(int lp1 = 1; lp1< = GlobalValues.kNoWeeks-5; lp1 ++)


{


for(int lp2 = lp1 + 1; lp2< = GlobalValues.kNoWeeks-4; lp2 ++)


{


for(int lp3 = lp2 + 1; lp3< = GlobalValues.kNoWeeks-3; lp3 ++)


{


for(int lp4 = lp3 + 1; lp4< = GlobalValues.kNoWeeks-2; lp4 ++)


{


for(int lp5 = lp4 + 1; lp5< = GlobalValues.kNoWeeks-1; lp5 ++)


{

(b lp6 = lp5 + 1; lp6< = GlobalValues.kNoWeeks; lp6 ++)

{

如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp1,1] + GlobalValues.gaSeconds [lp2,2] + GlobalValues.gaSeconds [lp3,3]]> 0)


{


lp6 = lp5 = lp4 = 100;


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp1,1] + GlobalValues.gaSeconds [lp2] ,2] + GlobalValues.gaSeconds [lp4,3]]> 0)


{


lp6 = lp5 = 100;


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp1,1] + GlobalValues.gaSeconds [lp3,2] + GlobalValues.gaSeconds [lp4,3]]> 0)


{


lp6 = lp5 = 100;


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp2,1] + GlobalValues.gaSeconds [lp3,2] + GlobalValues.gaSeconds [lp4,3]]> 0)


{


lp6 = lp5 = 100;


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp1,1] + GlobalValues.gaSeconds [lp2,2] + GlobalValues .gaSeconds [lp5,3]]> 0)


{


lp6 = 100;


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp1, 1] + GlobalValues.gaSeconds [lp3,2] + GlobalValues.gaSeconds [lp5,3]]> 0)


{


lp6 = 100;


继续;


}


如果

(GlobalValu es.gaSumWorkDays [GlobalValues.gaSeconds [lp1,1] + GlobalValues.gaSeconds [lp4,2] + GlobalValues.gaSeconds [lp5,3]]> 0)


{


lp6 = 100;


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp2,1] + GlobalValues.gaSeconds [lp3,2] + GlobalValues.gaSeconds [lp5,3]]> 0)


{


lp6 = 100;


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp2,1] + GlobalValues.gaSeconds [lp4,2] + GlobalValues。 gaSeconds [lp5,3]]> 0)


{


lp6 = 100;


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp3,1] ] + GlobalValues.gaSeconds [lp4,2] + GlobalValues.gaSeconds [lp5,3]]> 0)


{


lp6 = 100;


继续;


}


如果

(G1 obalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp1,1] + GlobalValues.gaSeconds [lp2,2] + GlobalValues.gaSeconds [lp6,3]]> 0)


{


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp1,1] + GlobalValues.gaSeconds [lp3,2] + GlobalValues.gaSeconds [lp6,3]]> 0)


{


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues。 gaSeconds [lp1,1] + GlobalValues.gaSeconds [lp4,2] + GlobalValues.gaSeconds [lp6,3]]> 0)


{


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp1] ,1] + GlobalValues.gaSeconds [lp5,2] + GlobalValues.gaSeconds [lp6,3]]> 0)


{


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp2,1] + GlobalValues.gaSeconds [lp3,2] + GlobalValues.ga秒[lp6,3]]> 0)


{


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp2,1] + GlobalValues.gaSeconds [lp4,2] + GlobalValues.gaSeconds [lp6] ,3]]> 0)


{


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp2,1] + GlobalValues.gaSeconds [lp5,2] + GlobalValues.gaSeconds [lp6,3] ]> 0)


{


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp3,1] + GlobalValues.gaSeconds [lp4,2] + GlobalValues.gaSeconds [lp6,3]]> 0)


{


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp3,1] + GlobalValues.gaSeconds [lp5,2] + GlobalValues.gaSeconds [lp6,3]]> 0)


{


继续;


}


如果

(GlobalValues.gaSumWorkDays [GlobalValues.gaSeconds [lp4,1] + GlobalValues.gaSeconds [lp5,2] + GlobalValues.gaSeconds [lp6,3]]> 0 )


{


继续;


}


lnSumMissingTime ++;


}


}


}


}


}


}


}


Console.WriteLine(Missing Time {0},lnSumMissingTime);


返回lnSumMissingTime;


}


}


TIA


Roy

Hi,

I am new to C#. I have the same time scheduling program written in C++ and
it is 5 times faster than my version in C#.
Why is it so slow as I thought that C# was only a little slower than C++?
What am I doing wrong?

Here is my code:

using System;

class cMain

{

public static int Main()

{

int[,] TimeSchedule = new int[GlobalValues.kNoDays+1,7]

{

{ 0, 0, 0, 0, 0, 0, 0},

{ 1, 1, 2, 3, 4, 5,49},

{ 2, 23,27,36,38,45,47},

{ 3, 23,33,35,42,44,48},

{ 4, 24,29,35,39,40,46},

{ 5, 22,28,34,40,44,45},

{ 6, 1, 2, 6,11,17,20},

{ 7, 1, 2, 7,10,16,21},

{ 8, 1, 2, 8,13,15,18},

{ 9, 23,26,34,36,41,47},

{ 10, 1, 2, 9,12,14,19},

{ 11, 23,28,31,35,37,42},

{ 12, 25,34,37,40,45,48},

{ 13, 32,33,44,46,47,48},

{ 14, 24,25,26,27,37,48},

{ 15, 24,29,30,32,40,42},

{ 16, 1, 3, 6,10,15,19},

{ 17, 1, 3, 7,11,14,18},

{ 18, 22,23,25,35,42,43},

{ 19, 1, 3, 8,12,17,21},

{ 20, 31,33,34,40,43,45},

{ 21, 30,33,36,39,44,48},

{ 22, 25,29,37,38,41,48},

{ 23, 1, 3, 9,13,16,20},

{ 24, 1, 4, 6,13,14,21},

{ 25, 24,25,28,33,41,45},

{ 26, 22,26,31,38,40,48},

{ 27, 1, 4, 7,12,15,20},

{ 28, 24,26,27,31,33,43},

{ 29, 23,27,32,39,40,41},

{ 30, 1, 4, 8,11,16,19},

{ 31, 22,25,32,43,46,47},

{ 32, 22,33,37,39,42,47},

{ 33, 1, 4, 9,10,17,18},

{ 34, 27,35,38,39,45,46},

{ 35, 1, 5, 6,12,16,18},

{ 36, 1, 5, 7,13,17,19},

{ 37, 1, 5, 8,10,14,20},

{ 38, 1, 5, 9,11,15,21},

{ 39, 1, 6, 7, 8, 9,49},

{ 40, 26,29,36,42,45,46},

{ 41, 1,10,11,12,13,49},

{ 42, 1,14,15,16,17,49},

{ 43, 1,18,19,20,21,49},

{ 44, 28,31,32,37,46,47},

{ 45, 22,25,30,36,39,43},

{ 46, 24,37,41,43,44,45},

{ 47, 26,34,35,39,41,46},

{ 48, 27,30,32,38,42,45},

{ 49, 22,24,26,27,28,44},

{ 50, 23,24,32,34,38,39},

{ 51, 22,32,33,35,36,37},

{ 52, 22,28,29,38,41,44},

{ 53, 28,39,42,43,47,48},

{ 54, 27,30,35,40,41,47},

{ 55, 2, 3, 6, 7,12,13},

{ 56, 27,36,40,41,42,46},

{ 57, 2, 3, 8, 9,10,11},

{ 58, 28,30,31,36,37,39},

{ 59, 2, 3,14,15,20,21},

{ 60, 23,24,29,36,40,47},

{ 61, 29,31,33,38,41,43},

{ 62, 2, 3,16,17,18,19},

{ 63, 26,29,30,35,45,47},

{ 64, 22,25,27,29,34,43},

{ 65, 2, 4, 6, 9,15,16},

{ 66, 26,37,38,40,43,44},

{ 67, 26,30,32,34,41,42},

{ 68, 23,30,31,33,43,46},

{ 69, 25,31,35,39,44,47},

{ 70, 2, 4, 7, 8,14,17},

{ 71, 2, 4,10,13,19,20},

{ 72, 2, 4,11,12,18,21},

{ 73, 24,34,36,38,42,46},

{ 74, 2, 5, 6, 8,19,21},

{ 75, 2, 5, 7, 9,18,20},

{ 76, 22,24,31,41,45,48},

{ 77, 25,26,28,33,38,40},

{ 78, 2, 5,10,12,15,17},

{ 79, 2, 5,11,13,14,16},

{ 80, 2, 6,10,14,18,49},

{ 81, 2, 7,11,15,19,49},

{ 82, 2, 8,12,16,20,49},

{ 83, 2, 9,13,17,21,49},

{ 84, 23,26,29,32,39,45},

{ 85, 24,30,34,35,38,47},

{ 86, 3, 4, 6, 8,18,20},

{ 87, 3, 4, 7, 9,19,21},

{ 88, 3, 4,10,12,14,16},

{ 89, 3, 4,11,13,15,17},

{ 90, 3, 5, 6, 9,14,17},

{ 91, 3, 5, 7, 8,15,16},

{ 92, 27,28,29,31,34,37},

{ 93, 23,25,30,37,46,48},

{ 94, 3, 5,10,13,18,21},

{ 95, 3, 5,11,12,19,20},

{ 96, 3, 6,11,16,21,49},

{ 97, 3, 7,10,17,20,49},

{ 98, 6, 7,14,16,19,20},

{ 99, 3, 8,13,14,19,49},

{100, 3, 9,12,15,18,49},

{101, 6, 7,15,17,18,21},

{102, 6, 8,10,13,16,17},

{103, 6, 8,11,12,14,15},

{104, 6, 9,10,12,20,21},

{105, 6, 9,11,13,18,19},

{106, 25,31,32,35,36,44},

{107, 4, 5, 8, 9,12,13},

{108, 4, 5,14,15,18,19},

{109, 4, 5,16,17,20,21},

{110, 4, 6,12,17,19,49},

{111, 4, 7,13,16,18,49},

{112, 7, 8,10,12,18,19},

{113, 7, 8,11,13,20,21},

{114, 7, 9,10,13,14,15},

{115, 7, 9,11,12,16,17},

{116, 8, 9,14,16,18,21},

{117, 8, 9,15,17,19,20},

{118, 10,11,14,17,19,21},

{119, 10,11,15,16,18,20},

{120, 12,13,14,17,18,20},

{121, 12,13,15,16,19,21},

{122, 4, 8,10,15,21,49},

{123, 4, 9,11,14,20,49},

{124, 5, 6,13,15,20,49},

{125, 5, 7,12,14,21,49},

{126, 5, 8,11,17,18,49},

{127, 5, 9,10,16,19,49},

{128, 4, 5, 6, 7,10,11},

{129, 22,23,28,30,44,46},

{130, 27,29,33,34,44,48},

{131, 28,32,36,42,43,48},

{132, 25,26,31,40,41,44},

{133, 24,28,38,40,43,48},

{134, 28,35,36,43,47,48},

{135, 24,25,31,38,44,45},

{136, 26,28,41,43,45,48},

{137, 25,28,29,33,44,46},

{138, 27,30,31,37,43,44},

{139, 22,23,25,31,34,48},

{140, 23,25,27,28,33,37},

{141, 22,29,30,31,33,48},

{142, 22,34,37,43,44,46},

{143, 25,31,36,42,44,47},

{144, 38,39,40,41,42,47},

{145, 22,26,33,37,38,45},

{146, 24,27,34,39,42,47},

{147, 23,26,32,35,42,45},

{148, 28,32,35,39,43,48},

{149, 23,29,37,43,44,48},

{150, 22,27,28,31,46,48},

{151, 22,24,33,37,40,41},

{152, 25,28,30,33,34,43},

{153, 23,30,34,38,40,46},

{154, 26,30,32,36,39,45},

{155, 27,29,34,35,38,41},

{156, 26,29,32,45,46,47},

{157, 23,24,27,30,41,46},

{158, 23,29,30,36,39,42},

{159, 25,31,32,39,42,44},

{160, 24,32,35,36,38,41},

{161, 24,26,27,29,40,45},

{162, 27,32,34,35,36,40},

{163, 23,30,35,36,46,47}};

for (int lpcnt=1; lpcnt<=GlobalValues.kNoSeconds; lpcnt++)
GlobalValues.gaSumWorkDays[lpcnt]=0;

for (int mm=1 ; mm<=GlobalValues.kNoDays ; mm++)

{

GlobalValues.gaWorkDays[1]=TimeSchedule[mm,1];

GlobalValues.gaWorkDays[2]=TimeSchedule[mm,2];

GlobalValues.gaWorkDays[3]=TimeSchedule[mm,3];

GlobalValues.gaWorkDays[4]=TimeSchedule[mm,4];

GlobalValues.gaWorkDays[5]=TimeSchedule[mm,5];

GlobalValues.gaWorkDays[6]=TimeSchedule[mm,6];

CWeekTime.WeekTime();

}
int lnTotMissingTime=0;

int t = DateTime.Now.Minute*60+DateTime.Now.Second;

Console.WriteLine("TimeStarted "+t);

lnTotMissingTime=CVerifyMissingTime.VerifyMissingT ime();
Console.WriteLine("Total No of Missing Time {0} ",lnTotMissingTime);

t = DateTime.Now.Minute*60+DateTime.Now.Second;

Console.WriteLine("Time Ended "+t);

Console.ReadLine();

return 0;

}

}

public class GlobalValues

{

public const int kNoWeeks=49;

public const int kNoDays=163;

public const int kNoSeconds=18424;

public static int gnSumSeconds = 0;

public static int[] gaWorkDays= new int [7];

public static int[] gaSumWorkDays = new int[kNoSeconds+1];

public static int[,] gaSeconds = new int [kNoWeeks+1,4]

{

{0, 0, 0, 0},

{1, 0, 0, 0},

{2, 1081, 0, 0},

{3, 2116, 46, 1},

{4, 3106, 91, 2},

{5, 4052, 135, 3},

{6, 4955, 178, 4},

{7, 5816, 220, 5},

{8, 6636, 261, 6},

{9, 7416, 301, 7},

{10, 8157, 340, 8},

{11, 8860, 378, 9},

{12, 9526, 415, 10},

{13, 10156, 451, 11},

{14, 10751, 486, 12},

{15, 11312, 520, 13},

{16, 11840, 553, 14},

{17, 12336, 585, 15},

{18, 12801, 616, 16},

{19, 13236, 646, 17},

{20, 13642, 675, 18},

{21, 14020, 703, 19},

{22, 14371, 730, 20},

{23, 14696, 756, 21},

{24, 14996, 781, 22},

{25, 15272, 805, 23},

{26, 15525, 828, 24},

{27, 15756, 850, 25},

{28, 15966, 871, 26},

{29, 16156, 891, 27},

{30, 16327, 910, 28},

{31, 16480, 928, 29},

{32, 16616, 945, 30},

{33, 16736, 961, 31},

{34, 16841, 976, 32},

{35, 16932, 990, 33},

{36, 17010, 1003, 34},

{37, 17076, 1015, 35},

{38, 17131, 1026, 36},

{39, 17176, 1036, 37},

{40, 17212, 1045, 38},

{41, 17240, 1053, 39},

{42, 17261, 1060, 40},

{43, 17276, 1066, 41},

{44, 17286, 1071, 42},

{45, 17292, 1075, 43},

{46, 17295, 1078, 44},

{47, 17296, 1080, 45},

{48, 0, 1081, 46},

{49, 0, 0, 47}};

}

class CWeekTime

{

public static int WeekTime()

{

for (int s1=1 ; s1<=4 ; s1++)

{

for (int s2=s1+1 ; s2<=5 ; s2++)

{

for (int s3=s2+1 ; s3<=6 ; s3++)

{

GlobalValues.gnSumSeconds=GlobalValues.gaSeconds[GlobalValues.gaWorkDays[s1],1]+GlobalValues.gaSeconds[GlobalValues.gaWorkDays[s2],2]+GlobalValues.gaSeconds[GlobalValues.gaWorkDays[s3],3];

GlobalValues.gaSumWorkDays[GlobalValues.gnSumSeconds]=1;

}

}

}

return (0);

}

}

class CVerifyMissingTime

{

public static int VerifyMissingTime()

{

int lnSumMissingTime=0;

for (int xxxLoop=1 ; xxxLoop<=10; xxxLoop++)

{

lnSumMissingTime=0;

for (int lp1=1 ; lp1<=GlobalValues.kNoWeeks-5 ; lp1++)

{

for (int lp2=lp1+1 ; lp2<=GlobalValues.kNoWeeks-4 ; lp2++)

{

for (int lp3=lp2+1 ; lp3<=GlobalValues.kNoWeeks-3 ; lp3++)

{

for (int lp4=lp3+1 ; lp4<=GlobalValues.kNoWeeks-2 ; lp4++)

{

for (int lp5=lp4+1 ; lp5<=GlobalValues.kNoWeeks-1 ; lp5++)

{

for (int lp6=lp5+1 ; lp6<=GlobalValues.kNoWeeks ; lp6++)

{

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp3,3]]>0)

{

lp6=lp5=lp4=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp4,3]]>0)

{

lp6=lp5=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp4,3]]>0)

{

lp6=lp5=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp4,3]]>0)

{

lp6=lp5=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp3,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp3,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp3,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp4,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

lnSumMissingTime++;

}

}

}

}

}

}

}

Console.WriteLine("Missing Time {0}",lnSumMissingTime);

return lnSumMissingTime;

}

}

TIA

Roy

推荐答案

Roy Gourgi< ro *** @ videotron.ca>写道:
Roy Gourgi <ro***@videotron.ca> wrote:
我是C#的新手。我有同时用C ++编写的调度程序,它比我在C#中的版本快5倍。
为什么它如此缓慢,因为我认为C#只比C ++慢一点?我做错了什么?
I am new to C#. I have the same time scheduling program written in C++ and
it is 5 times faster than my version in C#.
Why is it so slow as I thought that C# was only a little slower than C++?
What am I doing wrong?




好​​吧,你还没有展示你的C ++代码,你还没说什么

程序本来就是这样做的,而且代码很难理解(部分原因是由于不是面向对象的,所以到目前为止我只能用b $ b)看,这并没有真正的帮助。


我首先将它重构为一个更容易理解的形式,

和* then * look它的效率。


您也可以尝试使用锯齿状数组而不是矩形数组 -

这样在.NET中效率更高,而且你的大部分时间似乎都花在那些相当大的if语句中,这些语句除了数组访问之外几乎没有b $ b,这可能会成为一个问题gnificant

的区别。


-

Jon Skeet - < sk *** @ pobox.com>
http://www.pobox.com/~skeet 博客: http://www.msmvps.com/jon.skeet

如果回复小组,请不要给我发邮件



Well, you haven''t shown your C++ code, you haven''t said what the
program is meant to be doing, and the code is frighteningly difficult
to understand (partly due to not being object-oriented at all, as far
as I can see), which doesn''t really help.

I would start by refactoring it into a much easier to understand form,
and *then* look at the efficiency of it.

You could also try using jagged arrays instead of rectangular ones -
that''s more efficient in .NET, and as the majority of your time seems
to be spent in that rather large set of if statements which do very
little other than array access, that could make a significant
difference.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too


Roy,


我很好奇,为什么你建立自己的时间安排系统?为什么

不使用Windows中的应用程序scheduluer来按照预定的时间启动你的应用程序?


希望这有帮助。< br $> b $ b -

- Nicholas Paldino [.NET / C#MVP]

- mv*@spam.guard.caspershouse.com


" Roy Gourgi" < RO *** @ videotron.ca>在消息中写道

新闻:sY **************** @ weber.videotron.net ...
Roy,

I am curious, why are you building your own time scheduling system? Why
not use the application scheduluer in windows to launch your application at
your scheduled times?

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Roy Gourgi" <ro***@videotron.ca> wrote in message
news:sY****************@weber.videotron.net...


我是C#的新手。我有同时用C ++编写的调度程序,它比我在C#中的版本快5倍。
为什么它如此缓慢,因为我认为C#只比C ++慢一点?我做错了什么?

这是我的代码:

使用系统;

类cMain

{

public static int Main()

int [,] TimeSchedule = new int [GlobalValues.kNoDays + 1,7]

{0,0,0,0,0,0,0},

{1,1,2,3,4 ,5,49},

{2,23,27,36,38,45,47},

{3,23,33,35,42,44 ,48},

{4,24,29,35,39,40,46},

{5,22,28,34,40,44,45 },

{6,1,2,6,11,17,20},

{7,1,2,7,10,16,21},

{8,1,2,8,13,15,18},

{9,23,26,34,36,41,47},

{10,1,2,9,12,14,19},

{11,23,28,31,35,37,42},

{12,25,34,37,40,45,48},

{13,32,33,44,46,47,48},

{14,24,25,26,27,37,48},
{15,24,29,30,32,40,42},

{16,1,3,6,10,15,19},
{17,1,3,7,11,14,18},

{18,22,23,25,35,42,43},

{19,1,3,8,12,17,21},

{20,31,33,34,40,43,45},
{21,30,33,36,39,44,48},

{22,25,29,37,38,41,48},

{ 23,1,3,9,13,16,20},

{24,1,4,6,13,14,21},

{25, 24,25,28,33,41,45},

{26,22,26,31,38,40,48},

{27,1, 4,7,12,15,20},

{28,24,26,27,31,33,43},

{29,23,27, 32,39,40,41},

{30,1,4,8,11,16,19},

{31,22,25,32, 43,46,47},

{32,22,33,37,39,42,47},

{33,1,4,9,10, 17,18},

{34,27,35,38,39,45,46},

{35,1,5,6,12,16, 18},

{36,1,5,7,13,17,19},

{37,1,5,8,10,14,20} ,

{38,1,5,9,11,15,21},

{39,1,6,7,8,9,49},

{40,26,29,36,42,45,46},

{41,1,10,11, 12,13,49},

{42,1,14,15,16,17,49},

{43,1,18,19,20, 21,49},

{44,28,31,32,37,46,47},

{45,22,25,30,36,39, 43},

{46,24,37,41,43,44,45},

{47,26,34,35,39,41,46} ,

{48,27,30,32,38,42,45},

{49,22,24,26,27,28,44},

{50,23,24,32,34,38,39},

{51,22,32,33,35,36,37},
{52,22,28,29,38,41,44},

{53,28,39,42,43,47,48},
< brb> {54,27,30,35,40,41,47},

{55,2,3,6,7,12,13},
{56,27,36,40,41,42,46},

{57,2,3,8,9,10,11},

{ 58,28,30,31,36,37,39},

{59,2,3,14,15,20,21},

{60, 23,24,29,36,40,47},

{61,29,31,33,38,41,43},

{62,2, 3,16,17,18,19},

{63,26,29,30,35,45,47},

{64,22,25, 27,29,34,43},

{65,2,4,6,9,15,16},

{66,26,37,38, 40,43,44},

{67,26,30,32,34,41,42},

{68,23,30,31,33,43,46},

{69,25,31,35,39,44,47},

{70,2,4,7,8,14,17},

{71,2,4,10,13,19,20},

{72 ,2,4,1,12,12,18,21},

{73,24,34,36,38,42,46},

{74,2 ,5,6,8,19,21},

{75,2,5,7,9,18,20},

{76,22,24 ,31,41,45,48},

{77,25,26,28,33,38,40},

{78,2,5,10 ,12,15,17},

{79,2,5,11,13,14,16},

{80,2,6,10,14 ,18,49},

{81,2,7,11,15,19,49},

{82,2,8,12,16,20 ,49},

{83,2,9,13,17,21,49},

{84,23,26,29,32,39,45 },

{85,24,30,34,35,38,47},

{86,3,4,6,8,18,20},

{87,3,4,7,9,19,21},

{88,3,4,10,12,14,16},

{89,3,4,11,13,15,17},

{90,3,5,6,9,14,17},

{91,3,5,7,8,15,16},

{92,27,28,29,31,34,37},

{93,23,25,30,37,46,48},

{94,3,5,10,13,18,21},

{95,3,5,11,12,19,20},

{96,3,6,11,16,21,49},
{97,3,7,10,17,20,49},

{98,6,7,14,16,19,20},
< br> {99,3,8,13,14,19,49},

{100,3,9,12,15,18,49},
{101,6,7,15,17,18,21},

{102,6,8,10,13,16,17},

{ 103,6,8,11,12,14,15},

{104,6,9,10,12,20,21},

{105, 6,9,11,13,18,19},

{106,25,31,32,35,36,44},

{107,4, 5,8,9,12,13},

{108,4,5,14,15,18,19},

{109,4,5, {16,4,6,12,17,19,49},

{111,4,7,13, 16,18,49},

{112,7,8,10,12,18,19},

{113,7,8,11,13, {2,1,7,9,10,13,14,15},

{115,7,9,11,12,16, 17},

{116,8,9,14,16,18,21},

{117,8,9,15,17,19,20} ,

{118,10,11,14,17,19,21},

{119,10,11,15,16,18,20},

{120,12,13,14,17,18,20},

{121,12,13,15,16,19,2 1},

{122,4,8,10,15,21,49},

{123,4,9,11,14,20,49} ,

{124,5,6,13,15,20,49},

{125,5,7,12,14,21,49},

{126,5,8,11,17,18,49},

{127,5,9,10,16,19,49},
{128,4,5,6,7,10,11},

{129,22,23,28,30,44,46},
< brb> {130,27,29,33,34,44,48},

{131,28,32,36,42,43,48},
{132,25,26,31,40,41,44},

{133,24,28,38,40,43,48},

{ 134,28,35,36,43,47,48},

{135,24,25,31,38,44,45},

{136, 26,28,41,43,45,48},

{137,25,28,29,33,44,46},

{138,27, 30,31,37,43,44},

{139,22,23,25,31,34,48},

{140,23,25, 27,28,33,37},

{141,22,29,30,31,33,48},

{142,22,34,37, 43,44,46},

{143,25,31,36,42,44,47},

{144,38,39,40,41, 42,47},

{145,22,26,33,37,38,45},

{146,24,27,34,39,42, 47},

{147,23,26,32,35,42,45},

{14 8,28,32,35,39,43,48},

{149,23,29,37,43,44,48},

{150, 22,27,28,31,46,48},

{151,22,24,33,37,40,41},

{152,25, 28,30,33,34,43},

{153,23,30,34,38,40,46},

{154,26,30, 32,36,39,45},

{155,27,29,34,35,38,41},

{156,26,29,32, 45,46,47},

{157,23,24,27,30,41,46},

{158,23,29,30,36, 39,42},

{159,25,31,32,39,42,44},

{160,24,32,35,36,38, 41},

{161,24,26,27,29,40,45},

{162,27,32,34,35,36,40} ,

{163,23,30,35,36,46,47}};

for(int lpcnt = 1; LPCNT< = GlobalValues.kNoSeconds; lpcnt ++)
GlobalValues.gaSumWorkDays [lpcnt] = 0;

for(int mm = 1; mm< = GlobalValues.kNoDays; mm ++)

{

GlobalValues.gaWorkDays [1] = TimeSchedule [mm,1];

GlobalValues.gaWorkDays [2] = TimeSchedule [mm,2];

GlobalValues.gaWorkDays [3] = TimeSchedule [mm,3];

GlobalValues.gaWorkDays [4] = TimeSchedule [mm,4];

GlobalValues.gaWorkDays [5] = TimeSchedule [mm,5];

GlobalValues.gaWorkDays [6] = TimeSchedule [mm,6];

CWeekTime.WeekTime();

}

int lnTotMissingTime = 0;

int t = DateTime.Now.Minute * 60 + DateTime.Now.Second;

控制台.WriteLine(" TimeStarted" + t);

lnTotMissingTime = CVerifyMissingTime.VerifyMissingT ime();

Console.WriteLine("缺少时间总数{0 }",lnTotMissingTime);

t = DateTime.Now.Minute * 60 + DateTime.Now.Second;

Console.WriteLine(" Time Ended" + t);

Console.ReadLine( );

返回0;

}

}
公共类GlobalValues

{

public const int kNoWeeks = 49;

public const int kNoDays = 163;

public const int kNoSeconds = 18424;

public static int gnSumSeconds = 0;

public static int [] gaWorkDays = new int [7];

public static int [] gaSumWorkDays = new int [ kNoSeconds + 1];


public static int [,] gaSeconds = new int [kNoWeeks + 1,4]

{
{0,0,0,0},

{1,0,0,0},

{2,1081,0,0},
{3,2116,46,1},

{4,3106,91,2},

{5,4052,135,3} ,

{6,4955,178,4},

{7,5816,220,5},

{8,6666, 261,6},

{9,7416,301,7},

{10,8157,340,8},

{ 11,8860,378,9}},
{12,9526,415,10},

{13,10156,451,11},

{14,1,10751,486,12},

{15,11312,520,13},

{16,11840,553,14},

{17,12336,585,15},

{18,12801,616,16 },

{19,13236,646,17},

{20,16442,675,18},

{21,14020 ,703,19},

{22,14371,730,20},

{23,14696,756,21},

{24,14996,781,22},

{25,15272,805,23},

{26,15525,828,24},

{27,15756,850,25},

{28,15966,871,26},

{29,16156,891,27},

{30,16327,910,28},

{31,16480,928,29},

{32,16616,945 ,30},

{33,16736,961,31},

{34,16841,976,32},

{35 ,16932,990,33},
{36,17010,1003,34},

{37,17076,1015,35},


{39,17176,1036,37},

{40,17212,1045,38},

{41,17240,1053,39},

{42,17261,1060,40},

{43,47276,1066,41 },

{44,17286,1071,42},

{45,17292,1075,43},

{46,17295,1078,44},

{47,17296,1080,45},

{48,0,1081,46},

{49,0,0,47}};

}

class CWeekTime

{public static int WeekTime()


for(int s1 = 1 ; s1 <= 4; s1 ++)

对于(int s2 = s1 + 1; s2< = 5; s2 ++)

{

for(int s3 = s2 + 1; s3< = 6; s3 ++)



GlobalValues.gnSumSeconds = GlobalValues.gaSeconds [GlobalValues.gaWorkDays [s1], 1] + GlobalValues.gaSeconds [GlobalValues.gaWorkDays [s2],2] + GlobalValues.gaSeconds [GlobalValues.gaWorkDays [s3],3];

GlobalValues.gaSumWorkDays [GlobalValues.gnSumSeconds] = 1;

}

}

}

return (0);

}

}

class CVerifyMissingTime

{

public static int VerifyMissingTime()

{

int lnSumMissingTime=0;

for (int xxxLoop=1 ; xxxLoop<=10; xxxLoop++)

{

lnSumMissingTime=0;

for (int lp1=1 ; lp1<=GlobalValues.kNoWeeks-5 ; lp1++)

{

for (int lp2=lp1+1 ; lp2<=GlobalValues.kNoWeeks-4 ; lp2++)

{

for (int lp3=lp2+1 ; lp3<=GlobalValues. kNoWeeks- 3 ; lp3++)

{

for (int lp4=lp3+1 ; lp4<=GlobalValues.kNoWeeks-2 ; lp4++)

{

for (int lp5=lp4+1 ; lp5<=GlobalValues.kNoWeeks-1 ; lp5++)

{

for (int lp6=lp5+1 ; lp6<=GlobalValues.kNoWeeks ; lp6++)

{

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp3,3]]>0)

{

lp6=lp5=lp4=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp4,3]]>0)

{

lp6=lp5=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp4,3]]>0)

{

lp6=lp5=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[ GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp4,3]]>0)

{

lp6=lp5=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=1 00;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp3,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp 6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp3,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp3,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp4,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

lnSumMissingTime++;

}

}

}

}

}

}

}

Console.WriteLine("Missing Time {0}",lnSumMissingTime);

return lnSumMissingTime;

}

}

TIA

Roy

Hi,

I am new to C#. I have the same time scheduling program written in C++ and
it is 5 times faster than my version in C#.
Why is it so slow as I thought that C# was only a little slower than C++?
What am I doing wrong?

Here is my code:

using System;

class cMain

{

public static int Main()

{

int[,] TimeSchedule = new int[GlobalValues.kNoDays+1,7]

{

{ 0, 0, 0, 0, 0, 0, 0},

{ 1, 1, 2, 3, 4, 5,49},

{ 2, 23,27,36,38,45,47},

{ 3, 23,33,35,42,44,48},

{ 4, 24,29,35,39,40,46},

{ 5, 22,28,34,40,44,45},

{ 6, 1, 2, 6,11,17,20},

{ 7, 1, 2, 7,10,16,21},

{ 8, 1, 2, 8,13,15,18},

{ 9, 23,26,34,36,41,47},

{ 10, 1, 2, 9,12,14,19},

{ 11, 23,28,31,35,37,42},

{ 12, 25,34,37,40,45,48},

{ 13, 32,33,44,46,47,48},

{ 14, 24,25,26,27,37,48},

{ 15, 24,29,30,32,40,42},

{ 16, 1, 3, 6,10,15,19},

{ 17, 1, 3, 7,11,14,18},

{ 18, 22,23,25,35,42,43},

{ 19, 1, 3, 8,12,17,21},

{ 20, 31,33,34,40,43,45},

{ 21, 30,33,36,39,44,48},

{ 22, 25,29,37,38,41,48},

{ 23, 1, 3, 9,13,16,20},

{ 24, 1, 4, 6,13,14,21},

{ 25, 24,25,28,33,41,45},

{ 26, 22,26,31,38,40,48},

{ 27, 1, 4, 7,12,15,20},

{ 28, 24,26,27,31,33,43},

{ 29, 23,27,32,39,40,41},

{ 30, 1, 4, 8,11,16,19},

{ 31, 22,25,32,43,46,47},

{ 32, 22,33,37,39,42,47},

{ 33, 1, 4, 9,10,17,18},

{ 34, 27,35,38,39,45,46},

{ 35, 1, 5, 6,12,16,18},

{ 36, 1, 5, 7,13,17,19},

{ 37, 1, 5, 8,10,14,20},

{ 38, 1, 5, 9,11,15,21},

{ 39, 1, 6, 7, 8, 9,49},

{ 40, 26,29,36,42,45,46},

{ 41, 1,10,11,12,13,49},

{ 42, 1,14,15,16,17,49},

{ 43, 1,18,19,20,21,49},

{ 44, 28,31,32,37,46,47},

{ 45, 22,25,30,36,39,43},

{ 46, 24,37,41,43,44,45},

{ 47, 26,34,35,39,41,46},

{ 48, 27,30,32,38,42,45},

{ 49, 22,24,26,27,28,44},

{ 50, 23,24,32,34,38,39},

{ 51, 22,32,33,35,36,37},

{ 52, 22,28,29,38,41,44},

{ 53, 28,39,42,43,47,48},

{ 54, 27,30,35,40,41,47},

{ 55, 2, 3, 6, 7,12,13},

{ 56, 27,36,40,41,42,46},

{ 57, 2, 3, 8, 9,10,11},

{ 58, 28,30,31,36,37,39},

{ 59, 2, 3,14,15,20,21},

{ 60, 23,24,29,36,40,47},

{ 61, 29,31,33,38,41,43},

{ 62, 2, 3,16,17,18,19},

{ 63, 26,29,30,35,45,47},

{ 64, 22,25,27,29,34,43},

{ 65, 2, 4, 6, 9,15,16},

{ 66, 26,37,38,40,43,44},

{ 67, 26,30,32,34,41,42},

{ 68, 23,30,31,33,43,46},

{ 69, 25,31,35,39,44,47},

{ 70, 2, 4, 7, 8,14,17},

{ 71, 2, 4,10,13,19,20},

{ 72, 2, 4,11,12,18,21},

{ 73, 24,34,36,38,42,46},

{ 74, 2, 5, 6, 8,19,21},

{ 75, 2, 5, 7, 9,18,20},

{ 76, 22,24,31,41,45,48},

{ 77, 25,26,28,33,38,40},

{ 78, 2, 5,10,12,15,17},

{ 79, 2, 5,11,13,14,16},

{ 80, 2, 6,10,14,18,49},

{ 81, 2, 7,11,15,19,49},

{ 82, 2, 8,12,16,20,49},

{ 83, 2, 9,13,17,21,49},

{ 84, 23,26,29,32,39,45},

{ 85, 24,30,34,35,38,47},

{ 86, 3, 4, 6, 8,18,20},

{ 87, 3, 4, 7, 9,19,21},

{ 88, 3, 4,10,12,14,16},

{ 89, 3, 4,11,13,15,17},

{ 90, 3, 5, 6, 9,14,17},

{ 91, 3, 5, 7, 8,15,16},

{ 92, 27,28,29,31,34,37},

{ 93, 23,25,30,37,46,48},

{ 94, 3, 5,10,13,18,21},

{ 95, 3, 5,11,12,19,20},

{ 96, 3, 6,11,16,21,49},

{ 97, 3, 7,10,17,20,49},

{ 98, 6, 7,14,16,19,20},

{ 99, 3, 8,13,14,19,49},

{100, 3, 9,12,15,18,49},

{101, 6, 7,15,17,18,21},

{102, 6, 8,10,13,16,17},

{103, 6, 8,11,12,14,15},

{104, 6, 9,10,12,20,21},

{105, 6, 9,11,13,18,19},

{106, 25,31,32,35,36,44},

{107, 4, 5, 8, 9,12,13},

{108, 4, 5,14,15,18,19},

{109, 4, 5,16,17,20,21},

{110, 4, 6,12,17,19,49},

{111, 4, 7,13,16,18,49},

{112, 7, 8,10,12,18,19},

{113, 7, 8,11,13,20,21},

{114, 7, 9,10,13,14,15},

{115, 7, 9,11,12,16,17},

{116, 8, 9,14,16,18,21},

{117, 8, 9,15,17,19,20},

{118, 10,11,14,17,19,21},

{119, 10,11,15,16,18,20},

{120, 12,13,14,17,18,20},

{121, 12,13,15,16,19,21},

{122, 4, 8,10,15,21,49},

{123, 4, 9,11,14,20,49},

{124, 5, 6,13,15,20,49},

{125, 5, 7,12,14,21,49},

{126, 5, 8,11,17,18,49},

{127, 5, 9,10,16,19,49},

{128, 4, 5, 6, 7,10,11},

{129, 22,23,28,30,44,46},

{130, 27,29,33,34,44,48},

{131, 28,32,36,42,43,48},

{132, 25,26,31,40,41,44},

{133, 24,28,38,40,43,48},

{134, 28,35,36,43,47,48},

{135, 24,25,31,38,44,45},

{136, 26,28,41,43,45,48},

{137, 25,28,29,33,44,46},

{138, 27,30,31,37,43,44},

{139, 22,23,25,31,34,48},

{140, 23,25,27,28,33,37},

{141, 22,29,30,31,33,48},

{142, 22,34,37,43,44,46},

{143, 25,31,36,42,44,47},

{144, 38,39,40,41,42,47},

{145, 22,26,33,37,38,45},

{146, 24,27,34,39,42,47},

{147, 23,26,32,35,42,45},

{148, 28,32,35,39,43,48},

{149, 23,29,37,43,44,48},

{150, 22,27,28,31,46,48},

{151, 22,24,33,37,40,41},

{152, 25,28,30,33,34,43},

{153, 23,30,34,38,40,46},

{154, 26,30,32,36,39,45},

{155, 27,29,34,35,38,41},

{156, 26,29,32,45,46,47},

{157, 23,24,27,30,41,46},

{158, 23,29,30,36,39,42},

{159, 25,31,32,39,42,44},

{160, 24,32,35,36,38,41},

{161, 24,26,27,29,40,45},

{162, 27,32,34,35,36,40},

{163, 23,30,35,36,46,47}};

for (int lpcnt=1; lpcnt<=GlobalValues.kNoSeconds; lpcnt++)
GlobalValues.gaSumWorkDays[lpcnt]=0;

for (int mm=1 ; mm<=GlobalValues.kNoDays ; mm++)

{

GlobalValues.gaWorkDays[1]=TimeSchedule[mm,1];

GlobalValues.gaWorkDays[2]=TimeSchedule[mm,2];

GlobalValues.gaWorkDays[3]=TimeSchedule[mm,3];

GlobalValues.gaWorkDays[4]=TimeSchedule[mm,4];

GlobalValues.gaWorkDays[5]=TimeSchedule[mm,5];

GlobalValues.gaWorkDays[6]=TimeSchedule[mm,6];

CWeekTime.WeekTime();

}
int lnTotMissingTime=0;

int t = DateTime.Now.Minute*60+DateTime.Now.Second;

Console.WriteLine("TimeStarted "+t);

lnTotMissingTime=CVerifyMissingTime.VerifyMissingT ime();
Console.WriteLine("Total No of Missing Time {0} ",lnTotMissingTime);

t = DateTime.Now.Minute*60+DateTime.Now.Second;

Console.WriteLine("Time Ended "+t);

Console.ReadLine();

return 0;

}

}

public class GlobalValues

{

public const int kNoWeeks=49;

public const int kNoDays=163;

public const int kNoSeconds=18424;

public static int gnSumSeconds = 0;

public static int[] gaWorkDays= new int [7];

public static int[] gaSumWorkDays = new int[kNoSeconds+1];

public static int[,] gaSeconds = new int [kNoWeeks+1,4]

{

{0, 0, 0, 0},

{1, 0, 0, 0},

{2, 1081, 0, 0},

{3, 2116, 46, 1},

{4, 3106, 91, 2},

{5, 4052, 135, 3},

{6, 4955, 178, 4},

{7, 5816, 220, 5},

{8, 6636, 261, 6},

{9, 7416, 301, 7},

{10, 8157, 340, 8},

{11, 8860, 378, 9},

{12, 9526, 415, 10},

{13, 10156, 451, 11},

{14, 10751, 486, 12},

{15, 11312, 520, 13},

{16, 11840, 553, 14},

{17, 12336, 585, 15},

{18, 12801, 616, 16},

{19, 13236, 646, 17},

{20, 13642, 675, 18},

{21, 14020, 703, 19},

{22, 14371, 730, 20},

{23, 14696, 756, 21},

{24, 14996, 781, 22},

{25, 15272, 805, 23},

{26, 15525, 828, 24},

{27, 15756, 850, 25},

{28, 15966, 871, 26},

{29, 16156, 891, 27},

{30, 16327, 910, 28},

{31, 16480, 928, 29},

{32, 16616, 945, 30},

{33, 16736, 961, 31},

{34, 16841, 976, 32},

{35, 16932, 990, 33},

{36, 17010, 1003, 34},

{37, 17076, 1015, 35},

{38, 17131, 1026, 36},

{39, 17176, 1036, 37},

{40, 17212, 1045, 38},

{41, 17240, 1053, 39},

{42, 17261, 1060, 40},

{43, 17276, 1066, 41},

{44, 17286, 1071, 42},

{45, 17292, 1075, 43},

{46, 17295, 1078, 44},

{47, 17296, 1080, 45},

{48, 0, 1081, 46},

{49, 0, 0, 47}};

}

class CWeekTime

{

public static int WeekTime()

{

for (int s1=1 ; s1<=4 ; s1++)

{

for (int s2=s1+1 ; s2<=5 ; s2++)

{

for (int s3=s2+1 ; s3<=6 ; s3++)

{

GlobalValues.gnSumSeconds=GlobalValues.gaSeconds[GlobalValues.gaWorkDays[s1],1]+GlobalValues.gaSeconds[GlobalValues.gaWorkDays[s2],2]+GlobalValues.gaSeconds[GlobalValues.gaWorkDays[s3],3];

GlobalValues.gaSumWorkDays[GlobalValues.gnSumSeconds]=1;

}

}

}

return (0);

}

}

class CVerifyMissingTime

{

public static int VerifyMissingTime()

{

int lnSumMissingTime=0;

for (int xxxLoop=1 ; xxxLoop<=10; xxxLoop++)

{

lnSumMissingTime=0;

for (int lp1=1 ; lp1<=GlobalValues.kNoWeeks-5 ; lp1++)

{

for (int lp2=lp1+1 ; lp2<=GlobalValues.kNoWeeks-4 ; lp2++)

{

for (int lp3=lp2+1 ; lp3<=GlobalValues.kNoWeeks-3 ; lp3++)

{

for (int lp4=lp3+1 ; lp4<=GlobalValues.kNoWeeks-2 ; lp4++)

{

for (int lp5=lp4+1 ; lp5<=GlobalValues.kNoWeeks-1 ; lp5++)

{

for (int lp6=lp5+1 ; lp6<=GlobalValues.kNoWeeks ; lp6++)

{

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp3,3]]>0)

{

lp6=lp5=lp4=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp4,3]]>0)

{

lp6=lp5=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp4,3]]>0)

{

lp6=lp5=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp4,3]]>0)

{

lp6=lp5=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp3,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp5,3]]>0)

{

lp6=100;

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp2,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp1,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp3,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp2,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp3,1]+GlobalValues.gaSeconds[lp4,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp3,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

if
(GlobalValues.gaSumWorkDays[GlobalValues.gaSeconds[lp4,1]+GlobalValues.gaSeconds[lp5,2]+GlobalValues.gaSeconds[lp6,3]]>0)

{

continue;

}

lnSumMissingTime++;

}

}

}

}

}

}

}

Console.WriteLine("Missing Time {0}",lnSumMissingTime);

return lnSumMissingTime;

}

}

TIA

Roy



Hi,


Basically, for all intensive purposes all I have is 2 arrays (gaSeconds &

TimeSchedule). The array gaSeconds as you can see, has to be accessed many,

many times and for this application, it cannot absolutely be a jagged array.

The values in the gaSeconds in the real application change, but I kept them

constant for the sake of simplicity, so although it looks that I am

aimlessly accessing the same information many times in the

CVerifyMissingTime, I am not.


All I wanted to know if there is a way to make this faster. I am not that

worried about wheter it is in classic object oriented programming form as

speed is of the essence.


So basically this is the program in a more intuitive way:

I have to create 2 arrays (that can be seen throughout the whole program)

and one of which will be accessed many times.

Thanks

Roy


"Jon Skeet [C# MVP]" < SK *** @ pobox.com> wrote in message

news:MP***********************@msnews.microsoft.co m...
Hi,

Basically, for all intensive purposes all I have is 2 arrays (gaSeconds &
TimeSchedule). The array gaSeconds as you can see, has to be accessed many,
many times and for this application, it cannot absolutely be a jagged array.
The values in the gaSeconds in the real application change, but I kept them
constant for the sake of simplicity, so although it looks that I am
aimlessly accessing the same information many times in the
CVerifyMissingTime, I am not.

All I wanted to know if there is a way to make this faster. I am not that
worried about wheter it is in classic object oriented programming form as
speed is of the essence.

So basically this is the program in a more intuitive way:
I have to create 2 arrays (that can be seen throughout the whole program)
and one of which will be accessed many times.
Thanks
Roy

"Jon Skeet [C# MVP]" <sk***@pobox.com> wrote in message
news:MP***********************@msnews.microsoft.co m...
Roy Gourgi <ro***@videotron.ca> wrote:
Roy Gourgi <ro***@videotron.ca> wrote:
I am new to C#. I have the same time scheduling program written in C++
and
it is 5 times faster than my version in C#.
Why is it so slow as I thought that C# was only a little slower than C++?
What am I doing wrong?
I am new to C#. I have the same time scheduling program written in C++
and
it is 5 times faster than my version in C#.
Why is it so slow as I thought that C# was only a little slower than C++?
What am I doing wrong?



Well, you haven’’t shown your C++ code, you haven’’t said what the
program is meant to be doing, and the code is frighteningly difficult
to understand (partly due to not being object-oriented at all, as far
as I can see), which doesn’’t really help.

I would start by refactoring it into a much easier to understand form,
and *then* look at the efficiency of it.

You could also try using jagged arrays instead of rectangular ones -
that’’s more efficient in .NET, and as the majority of your time seems
to be spent in that rather large set of if statements which do very
little other than array access, that could make a significant
difference.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too



Well, you haven''t shown your C++ code, you haven''t said what the
program is meant to be doing, and the code is frighteningly difficult
to understand (partly due to not being object-oriented at all, as far
as I can see), which doesn''t really help.

I would start by refactoring it into a much easier to understand form,
and *then* look at the efficiency of it.

You could also try using jagged arrays instead of rectangular ones -
that''s more efficient in .NET, and as the majority of your time seems
to be spent in that rather large set of if statements which do very
little other than array access, that could make a significant
difference.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too



这篇关于为什么我的Time算法如此慢 - 有谁能告诉我为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆