private List<string[]> cache = null;
public void FastLoopShifting()
{
string[] arr = { "0", "1", "2", "3", "4" };
string[] result = FastShift(arr, 3);
PrintResult(result, 0);
}
private string[] FastShift(string[] arr, int shift)
{
if (arr == null)
throw new ApplicationException("The parameter 'string[] arr' is null");
GetCacheReady(arr);
return cache[shift];
}
private void GetCacheReady(string[] arr)
{
if (cache != null)
return;
if (arr == null)
throw new ApplicationException("The parameter 'string[] arr' is null");
cache = new List<string[]>();
cache.Add((string[])arr.Clone());
for (int i = 0; i < arr.Length - 1; i++)
{
ShiftRight(arr);
cache.Add((string[])arr.Clone());
}
}
Каким образом строчка arr.Clone(), которая будет создавать новую копию обьекта (довольно дорогостоящая операция) еще и вместе с кастингом string[] и все это выложенное в цикл - может привести к "аццки быстрой" версии? "Ацки-медленная" плюс неэффективно расходующая ресурсы, особенно на больших массивах - это да, это имеется.
private List<string[]> cache = null;
public void FastLoopShifting()
{
string[] arr = { "0", "1", "2", "3", "4" };
string[] result = FastShift(arr, 3);
PrintResult(result, 0);
}
private string[] FastShift(string[] arr, int shift)
{
if (arr == null)
throw new ApplicationException("The parameter 'string[] arr' is null");
GetCacheReady(arr);
return cache[shift];
}
private void GetCacheReady(string[] arr)
{
if (cache != null)
return;
if (arr == null)
throw new ApplicationException("The parameter 'string[] arr' is null");
cache = new List<string[]>();
cache.Add((string[])arr.Clone());
for (int i = 0; i < arr.Length - 1; i++)
{
ShiftRight(arr);
cache.Add((string[])arr.Clone());
}
}
Каким образом строчка arr.Clone(), которая будет создавать новую копию обьекта (довольно дорогостоящая операция) еще и вместе с кастингом string[] и все это выложенное в цикл - может привести к "аццки быстрой" версии? "Ацки-медленная" плюс неэффективно расходующая ресурсы, особенно на больших массивах - это да, это имеется.
Наверное имелось ввиду что результаты работы закешированы, и могут быстро быть извлечены при необходимости. Но это уже другая сказка
Каким образом строчка arr.Clone(), которая будет создавать новую копию обьекта (довольно дорогостоящая операция) еще и вместе с кастингом string[] и все это выложенное в цикл - может привести к "аццки быстрой" версии? "Ацки-медленная" плюс неэффективно расходующая ресурсы, особенно на больших массивах - это да, это имеется.
Серьезно?
А вы заметили, что весь смысл быстроты заключается не в функции, которая будет вызвана всего один раз, а в кешировании и считывании данных по индексу?
SBolgov wrote:P.S. По-моему, Mic просто прикололся.
Разумеется ни один дев в здравом уме использовать это не будет.
Но на интервью в МС подобное решение засчитают как вариант (с оговоркой о неиспользовании )
вернуть что-то из аутсорсинга задача гораздо сложнее чем отправить проект за океан (что достигается банальными взятками). из того что я видел, только провалов в исполнении обычно не достаточно. одна из проблем в том, что экономия уже отрапортована наверх и бабло в виде бонусов распилены.
Марик wrote:
В соседней группе так попробовали. Наняли полных тупарей индусов. Теперь те, кто нанимал ищут работу, а индусы кодят себе потихоньку. Ну плачется их тимлид, да кому до этих плачей дело есть?
В таком случае на Вашем месте я бы потихоньку начал искать другое место. Будет ли тот индус, которого Вы найдёте умным или нет - результат весьма вероятно будет такой же. Да Вы и сами это понимаете:
Марик wrote:Начальство думает о другом. Что провалят - сомнений нет, только отвечать как бы нам не пришлось.
А я все чаще замечаю, что меня как будто кто-то подменил...
SBolgov wrote:P.S. По-моему, Mic просто прикололся.
Разумеется ни один дев в здравом уме использовать это не будет.
Но на интервью в МС подобное решение засчитают как вариант (с оговоркой о неиспользовании )