RollCount, FaceCount и Mod — локальные целые числа. Rolls — локальный массив целых чисел. Различные вызовы string.Format() предназначены для статических полей CompositeFormat, доступных только для чтения.
w, x, y и z — статические поля, инициализируемые следующим образом.
x = (uint)DateTime.Now.Ticks;
y = (1812433253 * x) + 1;
z = (1812433253 * y) + 1;
w = (1812433253 * z) + 1;
Код, который я пытаюсь оптимизировать:
uint a = w, b = x, c = y, d = z, e;
int MaxCount = 0, MinCount = 0, NormalizedFaceCount = Math.Abs(FaceCount - 1);
int[] Rolls = new int[RollCount];
for (int i = 0; i < RollCount;)
{
switch ((RollCount - i) % 4)
{
case 0:
e = b ^ (b > 19) ^ e ^ (e >> 8)) & 0x7FFFFFFF) % (NormalizedFaceCount + 1)) + Mod) != Mod)
{
if (Rolls != NormalizedFaceCount + Mod) // If the roll is a normal roll.
{
Response += string.Format(null, StndString, Rolls);
}
else // If the roll is of maximum value.
{
Response += string.Format(null, CritString, Rolls);
MaxCount++;
}
}
else // If the roll is of minimum value.
{
Response += string.Format(null, FailString, Rolls);
MinCount++;
}
i++;
goto case 3;
case 3:
e = b ^ (b > 19) ^ e ^ (e >> 8)) & 0x7FFFFFFF) % (NormalizedFaceCount + 1)) + Mod) != Mod)
{
if (Rolls != NormalizedFaceCount + Mod)
{
Response += string.Format(null, StndString, Rolls);
}
else
{
Response += string.Format(null, CritString, Rolls);
MaxCount++;
}
}
else
{
Response += string.Format(null, FailString, Rolls);
MinCount++;
}
i++;
goto case 2;
case 2:
e = b ^ (b > 19) ^ e ^ (e >> 8)) & 0x7FFFFFFF) % (NormalizedFaceCount + 1)) + Mod) != Mod)
{
if (Rolls != NormalizedFaceCount + Mod)
{
Response += string.Format(null, StndString, Rolls);
}
else
{
Response += string.Format(null, CritString, Rolls[i]);
MaxCount++;
}
}
else
{
Response += string.Format(null, FailString, Rolls[i]);
MinCount++;
}
i++;
goto case 1;
case 1:
e = b ^ (b > 19) ^ e ^ (e >> 8)) & 0x7FFFFFFF) % (NormalizedFaceCount + 1)) + Mod) != Mod)
{
if (Rolls[i] != NormalizedFaceCount + Mod)
{
Response += string.Format(null, StndString, Rolls[i]);
}
else
{
Response += string.Format(null, CritString, Rolls[i]);
MaxCount++;
}
}
else
{
Response += string.Format(null, FailString, Rolls[i]);
MinCount++;
}
i++;
continue;
}
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... -speed-mem
Есть ли способ сделать этот код C# более оптимизированным с точки зрения скорости? Использование и размер памяти не имею ⇐ C#
Место общения программистов C#
1717001201
Anonymous
RollCount, FaceCount и Mod — локальные целые числа. Rolls — локальный массив целых чисел. Различные вызовы string.Format() предназначены для статических полей CompositeFormat, доступных только для чтения.
w, x, y и z — статические поля, инициализируемые следующим образом.
x = (uint)DateTime.Now.Ticks;
y = (1812433253 * x) + 1;
z = (1812433253 * y) + 1;
w = (1812433253 * z) + 1;
Код, который я пытаюсь оптимизировать:
uint a = w, b = x, c = y, d = z, e;
int MaxCount = 0, MinCount = 0, NormalizedFaceCount = Math.Abs(FaceCount - 1);
int[] Rolls = new int[RollCount];
for (int i = 0; i < RollCount;)
{
switch ((RollCount - i) % 4)
{
case 0:
e = b ^ (b > 19) ^ e ^ (e >> 8)) & 0x7FFFFFFF) % (NormalizedFaceCount + 1)) + Mod) != Mod)
{
if (Rolls[i] != NormalizedFaceCount + Mod) // If the roll is a normal roll.
{
Response += string.Format(null, StndString, Rolls[i]);
}
else // If the roll is of maximum value.
{
Response += string.Format(null, CritString, Rolls[i]);
MaxCount++;
}
}
else // If the roll is of minimum value.
{
Response += string.Format(null, FailString, Rolls[i]);
MinCount++;
}
i++;
goto case 3;
case 3:
e = b ^ (b > 19) ^ e ^ (e >> 8)) & 0x7FFFFFFF) % (NormalizedFaceCount + 1)) + Mod) != Mod)
{
if (Rolls[i] != NormalizedFaceCount + Mod)
{
Response += string.Format(null, StndString, Rolls[i]);
}
else
{
Response += string.Format(null, CritString, Rolls[i]);
MaxCount++;
}
}
else
{
Response += string.Format(null, FailString, Rolls[i]);
MinCount++;
}
i++;
goto case 2;
case 2:
e = b ^ (b > 19) ^ e ^ (e >> 8)) & 0x7FFFFFFF) % (NormalizedFaceCount + 1)) + Mod) != Mod)
{
if (Rolls[i] != NormalizedFaceCount + Mod)
{
Response += string.Format(null, StndString, Rolls[i]);
}
else
{
Response += string.Format(null, CritString, Rolls[i]);
MaxCount++;
}
}
else
{
Response += string.Format(null, FailString, Rolls[i]);
MinCount++;
}
i++;
goto case 1;
case 1:
e = b ^ (b > 19) ^ e ^ (e >> 8)) & 0x7FFFFFFF) % (NormalizedFaceCount + 1)) + Mod) != Mod)
{
if (Rolls[i] != NormalizedFaceCount + Mod)
{
Response += string.Format(null, StndString, Rolls[i]);
}
else
{
Response += string.Format(null, CritString, Rolls[i]);
MaxCount++;
}
}
else
{
Response += string.Format(null, FailString, Rolls[i]);
MinCount++;
}
i++;
continue;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78496127/is-there-any-way-to-make-this-c-sharp-code-more-optimized-in-terms-of-speed-mem[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия