performance

This commit is contained in:
Erik 2015-03-22 13:19:53 -04:00
parent 8fa8944672
commit 5533545adb

View File

@ -22,29 +22,33 @@
import Foundation import Foundation
private let shredder = SocketParser.Deconstructor() private let shredder = SocketParser.PacketShredder()
class SocketParser { class SocketParser {
// Translation of socket.io-parser#deconstructPacket // Translation of socket.io-parser#deconstructPacket
private class Deconstructor { private class PacketShredder {
var buf = ContiguousArray<NSData>() var buf = ContiguousArray<NSData>()
func ripAndTear(data:AnyObject) -> AnyObject { func shred(data:AnyObject) -> AnyObject {
if let bin = data as? NSData { if let bin = data as? NSData {
let placeholder = ["_placeholder" :true, "num": buf.count] let placeholder = ["_placeholder" :true, "num": buf.count]
buf.append(bin) buf.append(bin)
return placeholder return placeholder
} else if var arr = data as? [AnyObject] { } else if let arr = data as? NSArray {
var newArr = NSMutableArray(array: arr)
for i in 0..<arr.count { for i in 0..<arr.count {
arr[i] = ripAndTear(arr[i]) newArr[i] = shred(arr[i])
} }
return arr return newArr
} else if var newDict = data as? [String: AnyObject] { } else if let dict = data as? NSDictionary {
var newDict = NSMutableDictionary(dictionary: dict)
for (key, value) in newDict { for (key, value) in newDict {
newDict[key] = ripAndTear(value) newDict[key as NSCopying] = shred(value)
} }
return newDict return newDict
@ -62,7 +66,7 @@ class SocketParser {
for i in 0..<data.count { for i in 0..<data.count {
if data[i] is NSArray || data[i] is NSDictionary { if data[i] is NSArray || data[i] is NSDictionary {
data[i] = ripAndTear(data[i]) data[i] = shred(data[i])
} else if let bin = data[i] as? NSData { } else if let bin = data[i] as? NSData {
data[i] = ["_placeholder" :true, "num": buf.count] data[i] = ["_placeholder" :true, "num": buf.count]
buf.append(bin) buf.append(bin)