Что за аргументы попадают в метод с атрибутом [ArgumentsSource( )] ( как вообще можно узнать что пришло, если какой-то гений придумал что в Debug не работает Benchmark, гений), Каждый раз новый объект приходит для теста, или один и тот же по 1000 раз?
Cтолкнулся с проблемой, что некорректно время показывает, если только не выполнить reset метод входного параметра перед return. Разве для каждого метода, каждой итерации не новый объект приходит?
public IEnumerable<object[]> data ()
{
var d = CreateData(1000);
yield return new object[] { 1000,d.obj};
}
[Benchmark]
[ArgumentsSource(nameof(dataN))]
public int fun(int n,obj o){
//что за объект "o" будет приходить?
// для каждого запуска fun() это новый объект?
//... что-то по типу
o.counter++;
// если так не сделать в тесте, то некорректно работает. А это вообще как объяснить.
o.Reset(); // o.counter=0;
return 1;
// объект o все ~деконстуктился, или он в другой метод пошел, или в этот метод следующею итерацию?
} public int fun2(int n,obj o){}
class obj{
int counter; // статических полей нету
}