import Foundation import QuartzCore import ObjectMapper extension GithubUserObjectMapper { static func benchmark() { let path = NSBundle.mainBundle().pathForResource("user", ofType:"json") let data = NSData(contentsOfFile: path!) let json: NSDictionary? do { json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as? NSDictionary } catch let error { print(error) json = nil } print("ObjectMapper from json to json archive") let start = CACurrentMediaTime() for _ in 1...10000 { _ = Mapper().map(json) } let end = CACurrentMediaTime() let time = (end - start) * 1000.0 print("\(time) ms") // too slow... } } class GithubUserObjectMapper : Mappable { var login: String? var userID: UInt64? var avatarURL: String? var gravatarID: String? var url: String? var htmlURL: String? var followersURL: String? var followingURL: String? var gistsURL: String? var starredURL: String? var subscriptionsURL: String? var organizationsURL: String? var reposURL: String? var eventsURL: String? var receivedEventsURL: String? var type: String? var siteAdmin : Bool? var name: String? var company: String? var blog: String? var location: String? var email: String? var hireable: String? var bio: String? var publicRepos: Int? var publicGists: Int? var followers: Int? var following: Int? var createdAt: NSDate? var updatedAt: NSDate? var test: NSValue? required init?(_ map: Map){ } func mapping(map: Map) { login <- map["login"] userID <- map["id"] avatarURL <- map["avatar_url"] gravatarID <- map["gravatar_id"] url <- map["url"] htmlURL <- map["html_url"] followersURL <- map["followers_url"] followingURL <- map["following_url"] gistsURL <- map["gists_url"] starredURL <- map["starred_url"] subscriptionsURL <- map["subscriptions_url"] organizationsURL <- map["organizations_url"] reposURL <- map["repos_url"] eventsURL <- map["events_url"] receivedEventsURL <- map["received_events_url"] type <- map["type"] siteAdmin <- map["site_admin"] name <- map["name"] company <- map["company"] blog <- map["blog"] location <- map["location"] email <- map["email"] hireable <- map["hireable"] bio <- map["bio"] publicRepos <- map["public_repos"] publicGists <- map["public_gists"] followers <- map["followers"] following <- map["following"] createdAt <- (map["created_at"], DateTransform()) updatedAt <- map["updated_at"] test <- map["test"] } }