找回密码
 加入
搜索
查看: 3635|回复: 5

[网络通信] 有大神能给我优化一下这段代码吗

  [复制链接]
发表于 2015-3-10 09:33:20 | 显示全部楼层 |阅读模式
        For $ss = 0 To UBound($OnlineList) - 1
                $sRecv = TCPRecv($OnlineList[$ss][0], 2048, 1)
                If $sRecv <> "" Then
                        $daet = BinaryToString($sRecv, 4)
                        If StringLeft($daet, 1) = "*" And StringRight($daet, 1) = "*" Then
                                $SD = StringSplit($daet, "|", 2)
                                Select
                                        Case $SD[1] = 0 ;查询数据 并返回
                                                $iIndex = _ArraySearch($Verified, 0, 0, 0, 0, 1, 1, 1)
;~                                                 $iIndex = _ArrayFindAll($Verified, 0, 0, 0, 0, 1, 1)
                                                If @error Then
                                                        _ArraySort($Verified, 0, 0, 0, 1)
                                                        For $si1 = 0 To UBound($Verified) - 1
                                                                If $Verified[$si1][2] > 3 Then
                                                                        _ArrayDelete($Verified, $si1)
                                                                        ExitLoop
                                                                Else
                                                                        $Verified[$si1][1] = 0
                                                                EndIf
                                                        Next
                                                Else
                                                        $Verified[$iIndex][1] = 1
                                                        $sMsg = StringToBinary("*|" & $Verified[$iIndex][0] & "|" & $Verified[$iIndex][2] & "|" & $Verified[$iIndex][3] & "|" & $ver & "|" & $http & "|*", 4)
                                                        TCPSend($OnlineList[$ss][0], $sMsg)
                                                EndIf
                                        Case $SD[1] = 1
;~                                                 $iIndex = _ArrayFindAll($Verified, $SD[3], 0, 0, 0, 1, 0)
                                                $iIndex = _ArraySearch($Verified, $SD[3], 0, 0, 0, 1, 1, 0)
                                                If @error Then
                                                Else
                                                        $Verified[$iIndex][2] = $SD[2]
                                                EndIf
                                        Case $SD[1] = 2
                                                $iIndex = _ArraySearch($Verified, $SD[3], 0, 0, 0, 1, 1, 0)
                                                If @error Then
                                                        $all = UBound($Verified) + 1
                                                        ReDim $Verified[$all][4]
                                                        $Verified[$all - 1][0] = $SD[3]
                                                        $Verified[$all - 1][1] = 0
                                                        $Verified[$all - 1][2] = 0
                                                        $Verified[$all - 1][3] = 0
                                                EndIf
                                        Case $SD[1] = 3
                                                If UBound($avArray) > 1 Then
                                                        $sMsg = StringToBinary($avArray[0] & "*|" & $avArray[0] & "|0|0|0|0|*", 4)
                                                        TCPSend($OnlineList[$ss][0], $sMsg)
                                                        _ArrayDelete($avArray, 0)
                                                Else
                                                        If $ll = 0 Then
                                                                $ll = 1
                                                                $Timer = DllCallbackRegister("_tianjia", "int", "hwnd;uint;uint;dword")
                                                                $TimerDLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 10000, "ptr", DllCallbackGetPtr($Timer))
                                                        EndIf
                                                EndIf
                                EndSelect
                        EndIf
                EndIf
        Next
以前是在数据库读写数据 有最近想把数据读写到数组在操作想着速度应该能快很多 但是测试速度都差不多 请大神看看 这段代码能优化吗
发表于 2015-3-10 09:36:35 | 显示全部楼层
用sqlite去读
 楼主| 发表于 2015-3-10 09:40:48 | 显示全部楼层
回复 2# netegg


    您帮我分析一下我这段代码 有写的不合适的地方吗
发表于 2015-3-10 09:57:35 | 显示全部楼层
就这段来看,错是没错,小东西不用太在意所谓的效率问题,用array一样慢,那个也是循环查
 楼主| 发表于 2015-3-10 10:15:15 | 显示全部楼层
回复 4# netegg


    用sqlite是不是要比数组快呢
发表于 2015-3-10 12:49:00 | 显示全部楼层
道理上是,不过看你怎么查
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 16:34 , Processed in 0.080942 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表