我正在寫在Java中移動基於Android的設備的網絡服務器。的Java/Android的 - 快速的ByteBuffer解析
這是網絡服務器單線程和跟在別人後面的nginx,node.js的和類似的想法:不產卵多個線程只是一個事件循環使用異步操作。
雖然使用多線程網絡服務器可能會在x86最近的cpu上提供更好的性能,但基於arm的單核cpu需要做更多的工作。爲了澄清,我知道C很好,我已經在C#中使用普通C或多線程的單線程Web服務器,利用了Windows上的IOPS,但是我只寫了一個簡單的Java服務器,我想用這個新的替換。
現在,我使用java nio,並且我已經認爲ByteBuffer在轉換爲字符串時相當慢,但這不是問題,因爲我不需要這樣做,事實上可以實現gaix最大化表現我想要實現字節級的解析和比較。
我的問題是,該方法解析字節的緩衝區是更快?
我見過ByteBuffer支持get方法,它允許訪問單個字節並向前移動光標,支持array方法,返回backing數組,所以我的問題是哪種方法更快?
我可以備份陣列上直接工作,或者我應該避免並用得到?
我想實現一個ByteBufferPool重用bytebuffer,我會讓線程知道它,下面看,可以這是一個問題?
在某些情況下,我會比較字節到字節,應用掩碼來處理大小寫敏感(我的意思是,如果第一個字節是G,第三個是T,第四個是空間(0x47,0x54和0x20)可以將GET請求作爲GET來處理),而在其他情況下,我需要將字符串與字節數組進行比較,比如對於標題(我將通過字符串字符循環,將它們轉換爲字節並與字節進行比較)。
對不起,這些無聊的問題,但我不知道Java的規範,不知道內部Java的東西,所以我需要的相關信息:)
有人能給出一個暗示? :)
PS:obiviously,不是所有的操作可以在一個做的東西 - 暫停 - 繼續回報的方式處理,所以我將實現一個線程池來避免線程創建罰