Оптимизация функций над константами
От: Философ Ад http://vk.com/id10256428
Дата: 10.01.14 04:16
Оценка:
У меня определено несколько стоковых констант, например:

SpecialChars = "<>:\"/\\|?*";


и есть набор статических методов вот такого вида:

public static bool In(this Char p_Char, string p_String);
public static char[] Without(this string p_String, params char[] p_Chars);



Это сделано просто для удобства, т.е. чтобы можно было написать, например, вот так:

if (p_Char.In( SpecialChars.Without( '\\' ) )) {}


Вышеприведённый код вызывается код огромное кол-во раз.

Возникло два вопроса:
1) Оптимизирует ли компилятор C# такие вызовы автоматически?

Сильно подозреваю, что нет — не оптимизирует.
Однако перегружать код предвычислениями или "промежуточными" константами не хочется — он от этого сложнее станет.
Поэтому возник второй вопрос:

2) Можно ли как-нибудь подсказать компилятору, что результат вызова функции Without() с одинаковыми параметрами всегда будет одинаковым (чистая функция)? Т.е. возможно ли заставить его это оптимизировать (хранить промежуточные значения)?
Всё сказанное выше — личное мнение, если не указано обратное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.