Оптимизация, заполнить данные из памяти - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь заполнить объекты, используя память чтения.Я использую структуру, и она идет довольно быстро, по крайней мере, так кажется.

float x = 0;

while (true)
{
    st.Start();

    List<DataChild> DataChildList = new List<DataChild>();
    var Data = Algorithm.Data;
    Data.ChildData.pData = IntPtr.Add(Data.ChildData.pData, 0x20);

    for (int i = 0; i < Data.NumberOfObjects; i++)
    {
        ChildData childData = Data.ChildDatas.ReadValue(i, true);

        if (childData.Render.X != x)
        {
            Console.WriteLine("Change detected");
            x = childData.Render.X;
                            }
            DataChildList.Add(childData)
        }

        Algorithm.Data.Datas = DataChildList;
        st.Stop();
        Console.WriteLine($"populated in {st.Elapsed.TotalMilliseconds} ms");

        st.Reset();
   }
}

Вот мои структуры:

[StructLayout(LayoutKind.Explicit)]
public struct ChildData
{
  [FieldOffset(0x0)]
  public IntPtr BasePointer;

  [FieldOffset(0x400)]
  public IntPtr pRender;

  public Vector3 Render
  {
    get
    {
     return M.Read<Render>(this.pRender);
    }
  }
}

[StructLayout(LayoutKind.Explicit)]
public struct Render
{
 [FieldOffset(0x30)]
 public float X;

public float posX
{
  get
  {
   return this.X;
  }
}
}

Секундомер говорит, что я заполняю данные в 0.005 ms.

Когда я нажимаю клавишу, он меняет значениеиз childData.Render.X (пока единственный в списке).

Но он отображает его в диапазоне от 0,5 до 1 секунды, что кажется очень медленным по сравнению со скоростью цикла.

Должен сказать, что этот код работает в потоке.

Есть идеи, почему это так долго?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...