#define BENCHMARK_TEST(function, test_name) \
ArrayCopy(arr2,arr); \
t=GetMicrosecondCount(); \
N=##function(arr2,Value); \
t=GetMicrosecondCount()-t; \
printf("вариант %-12s: Контрольная сумма = %f; элементов - %d; время выполнения - %6d микросекунд", test_name, ControlSumm(arr2), N, t);
voidOnStart()
{
srand(1);
int N;
ulong t;
int Value=rand()%1000; // значение, которое нужно удалить из массиваint arr[]; // исходный массивint arr2[]; // создаем еще один массив для теста и копируем в него исходный массивArrayResize(arr,1000000);
for(int i=0; i<1000000;i++){
arr[i]=rand()%1000; //генерируем исходный массив случайными значениями от 0 до 1000
}
BENCHMARK_TEST(ArrayDeleteVal1, "Pastushak");
BENCHMARK_TEST(arrayFilter, "Korotky");
BENCHMARK_TEST(DelEl2, "Fedoseev");
BENCHMARK_TEST(ArrayDeleteVal, "Semko");
BENCHMARK_TEST(ArrayModify, "Pavlov");
BENCHMARK_TEST(arrayFilter2, "Nikitin");
BENCHMARK_TEST(ArrayDelV, "Vladimir");
BENCHMARK_TEST(PeterArray, "Peter");
BENCHMARK_TEST(arrayFilter3, "Kuznetsov");
}
//..............................................
结果。
2018.11.1501:11:13.670 Test (EURUSD,H1) вариант Pastushak : Контрольная сумма = 7225.757267; элементов - 998994; время выполнения - 127587 микросекунд
2018.11.1501:11:13.675 Test (EURUSD,H1) вариант Korotky : Контрольная сумма = 7225.757267; элементов - 998994; время выполнения - 2530 микросекунд
2018.11.1501:11:13.679 Test (EURUSD,H1) вариант Fedoseev : Контрольная сумма = 7225.757267; элементов - 998994; время выполнения - 1995 микросекунд
2018.11.1501:11:13.681 Test (EURUSD,H1) вариант Semko : Контрольная сумма = 7225.757267; элементов - 998994; время выполнения - 854 микросекунд
2018.11.1501:11:13.686 Test (EURUSD,H1) вариант Pavlov : Контрольная сумма = 7225.757267; элементов - 998994; время выполнения - 3239 микросекунд
2018.11.1501:11:13.692 Test (EURUSD,H1) вариант Nikitin : Контрольная сумма = 7225.757267; элементов - 998994; время выполнения - 3812 микросекунд
2018.11.1501:11:13.698 Test (EURUSD,H1) вариант Vladimir : Контрольная сумма = 7225.757267; элементов - 998994; время выполнения - 4037 микросекунд
2018.11.1501:11:13.707 Test (EURUSD,H1) вариант Peter : Контрольная сумма = 7225.757267; элементов - 998994; время выполнения - 7855 микросекунд
2018.11.1501:11:13.710 Test (EURUSD,H1) вариант Kuznetsov : Контрольная сумма = 7224.813498; элементов - 998994; время выполнения - 744 микросекунд
优化器没有参与 - 有一半的比较...
只是一个小型的重构("因为你不可能在这个世界上如此美丽...")。
结果。
只是一个小型的重构("因为你不可能在这个世界上如此美丽...")。
就在我问的上面--尝试把原始数组作为一个系列。ArraySetAsSeries(...,true)。
这是一个相当有意义的问题--看看哪些方法对序列完全不起作用,哪些方法出乎意料的慢。
不要介意阵列滤波,关于系列的问题更实用
只是一个小型的重构("因为你不可能在这个世界上如此美丽...")。
谢谢你,谢尔盖,给我们上了一堂有用的质量课。:)
将@Maxim Kuznetsov 移到一个单独的类别,毕竟功能不同。
推荐有错误的测试(Semko和Pavlov)。
添加您的变体
P.S. 和模板需要被删除,这也是比较双打时的一个潜在错误
将@Maxim Kuznetsov 移到一个单独的类别,毕竟功能不同。
推荐有错误的测试(Semko和Pavlov)。
添加您的变体
P.S. 模板也必须被删除,这是比较双打的潜在错误。
使最后两个数组元素等同于Value。森科没有错误。请告诉我们在什么情况下出现的错误。扔掉一个领导人是不太明智的。
那些与双倍数有关的错误是什么,是由它们的正常化引起的?所以,如果你用一个双数的数组工作,你需要担心自己把归一化的数据放入数组。
使数组的最后两个元素等于Value。Semko没有任何错误。告诉我他在哪些情况下有错误。扔掉领导人是不公平的。
那些与双倍数有关的错误是什么,是由它们的正常化引起的?如果我们要处理的是一个双数的数组,我们就必须自己把归一化的数据加入数组中。
我只是在代码中做了注释,你可能没有注意到。如果最后一个数组元素属于删除条件,即等于Value,则出现错误。
我没有把它从代码中删除:),只是为了防止有人复制这个错误。我认为尼古拉会纠正他的代码,他将自己返回 :)
至于模板:当传递双数时将会出现错误,因为该函数对实数的比较是不正确的,或者说,它根本就不是为了这个目的,所以在你放模板之前,我们应该确保该函数在任何类型下都能正确工作。
我在代码中做了注释,你可能没有注意到。错误是如果数组的最后一个元素属于删除条件,即等于Value
我没有把它从代码中删除:),只是为了防止有人在复制它时出现错误。我认为尼古拉会纠正他的代码,他将自己返回 :)
关于模板:当传递双数时将会出现错误,因为该函数对实数的比较是不正确的,或者说它根本就不是为了这个目的,所以在你放模板之前,你应该确保该函数在任何类型下都能正常工作。
那有什么可注意的呢?这一点。"如果数组的一个或多个最后的元素落在一个条件下,数组就会被破坏"?这就是我在上面写的--没有用。 我从你的截图中可以看出,这不是问题的关键。这个错误似乎是在项目数量较少时发生的。
双倍会出现什么样的错误?为什么?无论数组中的数据是什么,都会以这种方式工作。如果你想让它正常工作,你应该在把它放入数组之前进行归一化处理。但你不应该把规范化插入到函数本身。该功能与模板完全吻合,如果你正确使用它,在双倍的情况下也能正常工作。
每个人都突然关心起双重问题,这是非常好的事实。
有什么值得注意的呢?这一个。"如果一个或多个最后的元素属于该条件,则该数组被破坏"?这就是我在上面写的,它没有工作。 从你的截图可以看出,这不是问题的关键。这个错误似乎是在项目数量较少时发生的。
双倍会出现什么样的错误?为什么?无论数组中的数据是什么,都会以这种方式工作。如果你想让它正常工作,你应该在把它放入数组之前进行归一化处理。但你不应该把规范化插入到函数本身。该功能与模板完全吻合,如果你正确地使用它,就能顺利工作。
每个人都突然关心起双倍的问题,这是非常好的,但人们必须明智地对待它。
你和我对函数应该如何工作有不同的看法。 一个函数在非洲就是一个函数,它应该在没有任何数据准备的情况下工作,一切都必须在内部工作。
P.S. 其实没有人关心,我也不太在意。我只是写道,这里的模板是狗的第五条腿,可能是一个错误。
一个函数就是一个函数,应该在没有任何数据准备的情况下工作,一切都应该在内部工作。
这就是幼儿园。