У меня класс содержит более 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, зависания возвращаются.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости