{"id":9411,"date":"2014-08-25T11:12:29","date_gmt":"2014-08-25T15:12:29","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=9411"},"modified":"2014-10-13T10:53:59","modified_gmt":"2014-10-13T14:53:59","slug":"fastcoding","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2014\/08\/25\/fastcoding\/","title":{"rendered":"FastCoding"},"content":{"rendered":"<p><a href=\"https:\/\/github.com\/nicklockwood\/FastCoding\">Nick Lockwood<\/a>:<\/p>\r\n<blockquote cite=\"https:\/\/github.com\/nicklockwood\/FastCoding\"><p>FastCoder is a high-performance binary serialization format for Cocoa objects and object graphs. It is intended as a replacement for NSPropertyList, NSJSONSerializer, NSKeyedArchiver\/Unarchiver and Core Data.<\/p>\r\n<p>The design goals of the FastCoder library are to be fast, flexible and secure.<\/p>\r\n<p>FastCoder is already faster (on average) for reading than any of the built-in serialization mechanisms in Cocoa, and is faster for writing than any mechanism except for JSON (which doesn\u2019t support arbitrary object types). File size is smaller than NSKeyedArchiver, and comparable to the other methods.<\/p><\/blockquote>\r\n<p>This is potentially very useful because <code>NSArchiver<\/code> is essentially deprecated and <code>NSKeyedArchiver<\/code> is much slower and produces larger files. Binary property lists are decently fast but don&rsquo;t support objects or references.<\/p>\r\n<p>The API looks nice, except that I wish it used <code>NSError<\/code> rather than exceptions. It&rsquo;s compatible with ARC, but he recommends compiling with <tt>-fno-objc-arc<\/tt> for better performance. This, despite lots of <code>__unsafe_unretained<\/code> annotations in the code.<\/p>\r\n<p>Update (2014-09-03): <a href=\"https:\/\/github.com\/nicklockwood\/FastCoding\">Version 3<\/a> of FastCoding has a new file format that&rsquo;s faster and smaller.<\/p>","protected":false},"excerpt":{"rendered":"<p>Nick Lockwood: FastCoder is a high-performance binary serialization format for Cocoa objects and object graphs. It is intended as a replacement for NSPropertyList, NSJSONSerializer, NSKeyedArchiver\/Unarchiver and Core Data. The design goals of the FastCoder library are to be fast, flexible and secure. FastCoder is already faster (on average) for reading than any of the built-in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[55,69,54,74,138,71],"class_list":["post-9411","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-arc","tag-cocoa","tag-objective-c","tag-opensource","tag-optimization","tag-programming"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/9411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=9411"}],"version-history":[{"count":3,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/9411\/revisions"}],"predecessor-version":[{"id":9848,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/9411\/revisions\/9848"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=9411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=9411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=9411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}