У меня класс содержит более 600 строк кода, переносы я делаю не так часто, а когда код не вмещается в строку.
Сама среда, начинает отъедать почти 2 ГБ ОЗУ.
В коде присутствуют 2 примерно вот таких больших куска:
public static readonly Dictionary<Fcc, string> AviTypes = new Dictionary<Fcc, string>
{
{Fcc.Iarl, "Archive location"},
{Fcc.Iart, "Artist"},
{Fcc.Icms, "Commisioned"},
{Fcc.Icmt, "Comments"},
{Fcc.Icop, "Copyright"},
{Fcc.Icrd, "Creation date"},
{Fcc.Icrp, "Cropped"},
{Fcc.Idim, "Dimensions"},
{Fcc.Idpi, "Dots per inch"},
{Fcc.Ieng, "Engineer"},
{Fcc.Ignr, "Genre"},
{Fcc.Isgn, "Secondary Genre"},
{Fcc.Ikey, "Keywords"},
{Fcc.Ilgt, "Lightness"},
{Fcc.Imed, "Medium"},
{Fcc.Inam, "Name"},
{Fcc.Iplt, "Palette setting"},
{Fcc.Iprd, "Product"},
{Fcc.Isbj, "Subject"},
{Fcc.Isft, "Software"},
{Fcc.Ishp, "Sharpness"},
{Fcc.Isrc, "Source"},
{Fcc.Isrf, "Source form"},
{Fcc.Itch, "Technician"},
{Fcc.Ismp, "Time code"},
{Fcc.Idit, "Digitalization time"},
{Fcc.Iwri, "Writer"},
{Fcc.Ipro, "Producer"},
{Fcc.Icnm, "Cinematographer"},
{Fcc.Ipds, "Production designer"},
{Fcc.Iedt, "Editor"},
{Fcc.Icds, "Costume designer"},
{Fcc.Imus, "Music"},
{Fcc.Istd, "Production studio"},
{Fcc.Idst, "Distributor"},
{Fcc.Icnt, "Country"},
{Fcc.Istr, "Starring"},
{Fcc.Ifrm, "Total number of parts"},
{Fcc.Strn, "Stream name"},
{Fcc.Ias1, "First Language"},
{Fcc.Ias2, "Second Language"},
{Fcc.Ias3, "Third Language"},
{Fcc.Ias4, "Fourth Language"},
{Fcc.Ias5, "Fifth Language"},
{Fcc.Ias6, "Sixth Language"},
{Fcc.Ias7, "Seventh Language"},
{Fcc.Ias8, "Eighth Language"},
{Fcc.Ias9, "Ninth Language"},
{0u, "???"}
};
Или вот такие огромные методы:
private bool ChunkReadIndx(AviChunk* chunk)
{
AviChunkIndx* pIndx = (AviChunkIndx*) chunk;
uint count = 0;
ulong read = 0;
sbyte* pRead = null, pBuff = null;
if (!BeginReadChunk(chunk, ref read, &pRead, &pBuff))
{
return false;
}
Read(out pIndx->LongsPerEntry, ref read, &pRead);
Read(out pIndx->IndexSubType, ref read, &pRead);
Read(out pIndx->IndexType, ref read, &pRead);
Read(out pIndx->EntriesInUse, ref read, &pRead);
Read(out pIndx->Id, ref read, &pRead);
pIndx->Idx.Std = null;
pIndx->Idx.Field = null;
pIndx->Idx.Super = null;
bool retValue = true;
if (pIndx->IndexType == 0x01 && pIndx->IndexSubType == 0)
{
Read(out pIndx->BaseOffset, ref read, &pRead);
Read(out uint _, ref read, &pRead);
count = (uint) Math.Min(pIndx->EntriesInUse, read / 8);
pIndx->EntriesInUse = count;
pIndx->Idx.Std = Memory.Instance.CAlloc<IndxStdEntry>(count);
if (count == 0 || pIndx->Idx.Std != null)
{
for (int i = 0; i < count; i++)
{
Read(out pIndx->Idx.Std[i].Offset, ref read, &pRead);
Read(out pIndx->Idx.Std[i].Size, ref read, &pRead);
}
}
else
{
retValue = false;
}
}
else if (pIndx->IndexType == 0x01 && pIndx->IndexSubType == 0x01)
{
pIndx->BaseOffset = 0;
Read(out uint _, ref read, &pRead);
Read(out uint _, ref read, &pRead);
Read(out uint _, ref read, &pRead);
count = (uint) Math.Min(pIndx->EntriesInUse, read / 12);
pIndx->EntriesInUse = count;
pIndx->Idx.Field = Memory.Instance.CAlloc<IndxFieldEntry>(count);
if (count == 0 || pIndx->Idx.Field != null)
{
for (int i = 0; i < count; i++)
{
Read(out pIndx->Idx.Field[i].Offset, ref read, &pRead);
Read(out pIndx->Idx.Field[i].Size, ref read, &pRead);
Read(out pIndx->Idx.Field[i].OffsetField2, ref read, &pRead);
}
}
else
{
retValue = false;
}
}
else if (pIndx->IndexType == 0x00)
{
pIndx->BaseOffset = 0;
Read(out uint _, ref read, &pRead);
Read(out uint _, ref read, &pRead);
Read(out uint _, ref read, &pRead);
count = (uint) Math.Min(pIndx->EntriesInUse, read / 16);
pIndx->EntriesInUse = count;
pIndx->Idx.Super = Memory.Instance.CAlloc<IndxSuperEntry>(count);
if (count == 0 || pIndx->Idx.Super != null)
{
for (int i = 0; i < count; i++)
{
Read(out pIndx->Idx.Super[i].Offset, ref read, &pRead);
Read(out pIndx->Idx.Super[i].Size, ref read, &pRead);
Read(out pIndx->Idx.Super[i].Duration, ref read, &pRead);
}
}
else
{
retValue = false;
}
}
else
{
Debug.Write("unknown type/subtype index", "WARNING");
}
return EndReadChunk(&pBuff, retValue);
}
Но даже при сворачивании таких блоков, редактор все так же лагает, т.е. я могу написать несколько слов, а они могут появится спустя несколько секунд.
В чем может быть причина таких зависаний редактора если работает один плагин Resharper
, а IntelliSense
и IntelliCode
отключены?
P.S. Помогает перезапуск среды, но это не является решением, т.к. спустя минут так 20, зависания возвращаются.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
День добрый, господаКак нибудь возможно программно обратиться к данному окну и поменять текущий радио баттон на нужный мне ?
Столкнулся с проблемой: мне нужно чтобы занятые места (созданные в виде кнопок), нельзя было выбратьТо есть переключить их значение Enabled в false