2014-01-09 3 views
1

Я уже некоторое время работаю над редактором памяти. Одним из ключевых аспектов этого является просмотр памяти для значений, которые соответствуют поисковому запросу. Это, однако, очень медленно. Вот код:Как ускорить этот код

For i = 0 To 1318706384 - 4 Step 4 

    For j = 0 To 3 
     temparry(j) = alldata(i + j) 
    Next 

    tempint = BitConverter.ToSingle(temparry, 0) 

    If tempint + 0.01 > xposs AndAlso tempint - 0.01 < xposs Then 
     ReDim Preserve xpos(xpos.GetLength(0)) 
     xpos(xpos.GetLength(0) - 1) = i 

    End If 

    If InStrRev(i.ToString, "000000") > 0 Then 
     Label1.Text = i/1318706384 * 100 
     Me.Update() 
    End If 
Next 

Любые советы о том, как ускорить его, было бы здорово! Массив xpos обновляется только примерно 50 раз, поэтому он не составляет большого количества времени (это небольшой массив). Благодаря!

+0

Wow Я даже не слышал о кодоревью. Хотя, глядя на определение codereviews, похоже, что это по-прежнему является правильным местом для моего вопроса, поскольку я прошу конкретной помощи о том, как что-то изменить. Не полностью просматривать мой код. Вы согласны? – FraserOfSmeg

+0

Вы можете определенно получить огромное улучшение, используя указатели и код 'unsafe', но, к сожалению, это невозможно в VB.NET. – MarcinJuraszek

+0

Да, согласен. Вот почему я удалил свой закрытый голос и комментарий. – MarcinJuraszek

ответ

1

Одна вещь, которая должна помочь со скоростью, заключается не в создании временного массива, а только при старте индекса BitConverter.ToSingle.

'For j = 0 To 3 
    'temparry(j) = alldata(i + j) 
'Next 

tempint = BitConverter.ToSingle(alldata, i) 

если 0 в вашем поиск как в этом последнем бите находится в конце, то оператор модуля, Mod, вероятно, следует работать лучше, чем литье I в строку и поиск строки

If i Mod Math.Pow(10,5) = 0 Then 
+0

Будет ли это принимать только 4 байта массива alldata? – FraserOfSmeg

+0

да [BitConverter.ToSingle] (http://msdn.microsoft.com/en-us/library/system.bitconverter.tosingle%28v=vs.110%29.aspx) – tinstaafl

+0

Я добавил еще одну мысль для вас. – tinstaafl

Смежные вопросы