Оптимизировать функцию в Javascript

Я новичок в javascript, но мне удалось написать работающую xml-функцию:)

Я надеялся, что кто-нибудь может дать мне краткое изложение того, как оптимизировать функцию. В настоящее время существует своя функция для погоды в каждом штате, но я надеялся, что смогу это как-то упростить.

Код вставлен здесь: http://pastie.org/private/ffuvwgbeenhyo07vqkkcsw

Любая помощь очень важна оценен. Для скорости я использую UnsafeNativeMethods для выполнения всех преобразований. Эта проблема: ...

Справочная информация: Я использую управляемые библиотеки DirectX 9.0 для преобразования массивов трехмерных точек в двумерные экранные координаты. Для скорости я использую UnsafeNativeMethods для выполнения всех преобразований.

Проблема: Если используется моя пользовательская функция обрезки строк, мое приложение умирает без каких-либо исключений, мне потребовалось некоторое время, чтобы выяснить, что оно выбрасывает uncatchable System.ExecutionEngineException . Я сузил его до случая из-за последних двух строк моей функции отсечения.

List verticesAfterClipping = new List;
public unsafe void ClipLine(Line lineToClip)
{
    this.verticesAfterClipping.Clear();

    // Clipping algorithm happens here... (this is psuedo-code of what it does)
    foreach(Vertex in lineToClip.Vertices)
    {
        bool thisIsClipped =   // Set to whether this vertex is clipped
        bool lastWasClipped =  // Set to whether last vertex was clipped

        if(thisIsClipped == false && lastWasClipped == true)
        {
            verticesAfterClipping.Add( /* intersection on clipping plane */ );
            verticesAfterClipping.Add( /* thisVertex */ );
        }
        else if (thisIsClipped == false && lastWasClipped == false)
        {
            verticesAfterClipping.Add( /* thisVertex */ );
        }
        else if (thisIsClipped == true && lastWasClipped == false)
        {
            verticesAfterClipping.Add(/* intersection on clipping plane */);
        }
    }

    // THIS IS WHERE BAD THINGS HAPPEN
    lineToClip.Vertices = new Vertex[verticesAfterClipping.Count];
    verticesAfterClipping.CopyTo(lineToClip.Vertices, 0);
}

Когда список verticesAfterClipping копируется в lineToClip вершины, вершины lineToClip ] затем передается в UnsafeNativeMethod, который преобразует эти вершины в 2d вершины. Судя по всему, что я вижу, когда прохожу через него в режиме отладки, он работает полностью нормально, пока просто не умирает.

Я просто не могу понять, что не так. Любая помощь будет принята с благодарностью.

11
задан Osteoboon 13 January 2013 в 02:16
поделиться