У меня есть абстрактный класс, который выполняет довольно вычислительные серии статических функций внутри нескольких вложенных циклов.
В небольшом числе этих циклов мне нужно получить список дат, которые хранятся вразделенная запятыми строка в файле .settings.Затем я анализирую их в DateTimes и использую их.
Проблема в том, что я снова и снова разбираю эти строки, и это занимает довольно много процессорного времени (очевидно).Профилирование показывает, что 20% основного алгоритма тратится на эти операции.Если бы я мог как-то их кэшировать в месте, доступном статическим функциям, это сэкономило бы мне много времени на обработку.
Самый простой вариант - это проанализировать список DateTimes в самом начале вычисления, изатем передайте этот список каждой из подфункций.Это, безусловно, сократит работу ЦП, но это будет означать, что подфункции должны будут принимать этот список при вызове вне основного алгоритма.Интуитивно не понятно, зачем нужен список DateTimes при вызове одной из родительских статических функций.
Еще одна вещь, которую можно исправить, это сделать класс не абстрактным, а функции не статичными.и сохраните список дат и т. д. в переменных для каждой доступной функции.Причина, по которой я хотел сделать его абстрактным для статических функций, заключается в том, что я не хотел создавать экземпляр класса каждый раз, когда мне нужно было вручную вызвать одну из подфункций.
В идеале, что бы я хотелДля этого нужно один раз проанализировать список и сохранить его где-нибудь в памяти.Затем, когда я делаю последующую итерацию, я могу как-то проверить, не является ли она нулевой, тогда я могу ее использовать.Если он нулевой (возможно, потому что я на первой итерации), то я знаю, что мне нужно его проанализировать.
Я думал, что мог бы иметь файл .settings, в котором есть список.Я бы никогда не сохранил файл настроек на диск, но в основном это позволило бы хранить между статическими вызовами.
Я знаю, что все это очень грязно - я просто пытаюсь избежать перезаписи тысячи строк статическогокод, если это возможно.
Если вы все думаете, что это ужасная идея, тогда я подниму свой белый флаг и перепишу все это.