Самый маленький и быстрый способ захвата выходных данных forloop - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над этапом оптимизации для нашего asp. net веб-приложения и хочу уменьшить и ускорить как можно большую часть серверной части. Есть ли способ уменьшить значение l oop, чтобы оно стало лямбда-выражением, может быть?

Чистый пример чего-то, что я мог бы захотеть уменьшить:

string outS = "";
for (int i = 0; i < length; i++)
{
     outS += random.Next(0, 9).ToString();
}
return int.Parse(outS).ToString();

Вместо того, чтобы создавать новую переменную, выполнять какую-то функцию для ее генерации и затем возвращать ее, есть ли способ, где я могу сделать все это в одной строке? Как вернуть функцию лямбда-выражения? Или текущая функциональность в любом случае является самым быстрым способом сделать это?

Как этот глупый пример:

return => for(int i = 0; i < length; i++)
            {
                random.Next(0, 9).ToString();
            }

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Если метод logi c возвращает случайное число с указанным количеством цифр в переменной длины, вы можете сделать что-то вроде этого:

private int TestMethod(int length) => 
    new Random().Next((int)Math.Pow(10, length - 1), (int)Math.Pow(10, length));

Эта форма имеет некоторые преимущества:

  1. Нет конкатенации строк. Конкатенация строк не рекомендуется, если выполняется много конкатенаций.
  2. Количество раз, когда запрашивается случайное число, уменьшается (в приведенном выше коде метод Random.Next вызывается только один раз).

Тем не менее, рекомендуется выполнять профилирование, сравнивая альтернативы. Вы можете сделать это с помощью Diagnosti c Tools View в Visual Studio и с помощью StopWatch class

0 голосов
/ 04 мая 2020

Если вам просто интересно сжать строки кода, вы можете использовать метод ForEach Linq и передать лямбда-выражение.

This:

string outS = "";
for (int i = 0; i < length; i++)
{
     outS += random.Next(0, 9).ToString();
}
return int.Parse(outS).ToString();

Получается так:

string outS = "";
new List<int>(10).ForEach(_ => outS += random.Next(0, 9).ToString());
return int.Parse(outS).ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...