Pandas имеет два считывателя csv, только гибко относится к избыточному ведущему пробелу:
pd.read_csv("whitespace.csv", skipinitialspace=True)
, в то время как один не является
pd.DataFrame.from_csv("whitespace.csv")
Ни тот, поле гибкое относительно конечного пробела, см. ответы с регулярными выражениями. Избегайте delim_whitespace, так как оно также позволяет просто пробелы (без или \ t) в качестве разделителей.
Медлительность может быть связана с аппаратным обеспечением на сервере, например: - Ram, процессор. и службы или приложения, работающие в фоновом режиме на сервере.
В основном этот тип медлительности происходит из-за совершения этой ошибки:
for (var i = 0; i<100; i++)
{
// do a network-roundtrip/remoting/io/etc
}
, и решение состоит в том, чтобы изменить его на:
// do a network-roundtrip/remoting/io/etc
for (var i = 0; i<100; i++)
{
// do something with the result of the above call
}
Так что, если я правильно вас понял, данные Global.holidayGlobals.Values
поступают из другого процесса, например, из кеша памяти. Если это так, вам проще всего изменить код на:
int limit=450;
public bool functionUI()
{
var holidays = Global.holidayGlobals.Values;
for(int i=0;i< limit ; i++)
{
functionApp(i, holidays);
}
}
public static bool functionApp(int i, IEnumerable<HolidayEntity> holidays)
{
foreach(var h in holidays)
{
if(h.Value == i)
{
return false;
}
}
return true;
}
Мы все еще делаем слишком много работы в циклах (мы можем улучшить алгоритм, создав словарь и просто просмотрев его), но для по вашему номеру (450) это ничтожно мало по сравнению со временем одной поездки туда и обратно в кэш памяти.
ОБНОВЛЕНИЕ
Из комментариев к вопросу видно, что holidays
равно Dictionary<int, HolidayEntity>
, если так, код может стать намного лучше, как это: