Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

executable file 186 lines (169 sloc) 7.664 kb
#!/usr/bin/env escript
%% The MIT License
%% Copyright (c) 2012 Alisdair Sullivan <alisdairsullivan@yahoo.ca>
%% Permission is hereby granted, free of charge, to any person obtaining a copy
%% of this software and associated documentation files (the "Software"), to deal
%% in the Software without restriction, including without limitation the rights
%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
%% copies of the Software, and to permit persons to whom the Software is
%% furnished to do so, subject to the following conditions:
%% The above copyright notice and this permission notice shall be included in
%% all copies or substantial portions of the Software.
%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
%% THE SOFTWARE.
-mode(compile).
-define(averageN(Test, N),
{average, {repeat, N, Test}}
).
main([]) ->
%% preload jsx mods
jsx:to_term(<<"{}">>),
format(frequency:profile({"empty object to term", ?averageN({jsx, to_term, [<<"{}">>]}, 1000)})),
format(frequency:profile({"empty object to json", ?averageN({jsx, to_json, [[{}]]}, 1000)})),
format(frequency:profile({"empty array to term", ?averageN({jsx, to_term, [<<"[]">>]}, 1000)})),
format(frequency:profile({"empty array to json", ?averageN({jsx, to_json, [[]]}, 1000)})),
format(frequency:profile({"sample tweet to term", ?averageN({jsx, to_term, [sample_tweet()]}, 1000)})),
format(frequency:profile({"sample tweet to json", ?averageN({jsx, to_json, [jsx:to_term(sample_tweet())]}, 1000)})),
format(frequency:profile({"sample github user to term", ?averageN({jsx, to_term, [sample_github_user()]}, 1000)})),
format(frequency:profile({"sample github user to json", ?averageN({jsx, to_json, [jsx:to_term(sample_github_user())]}, 1000)})).
format([]) -> ok;
format([{name, Name}|Rest]) ->
io:format("name : ~p~n", [Name]),
format(Rest);
format([{time, Time}|Rest]) ->
io:format("time : ~p~n", [Time]),
format(Rest);
format([{error, Error}|Rest]) ->
io:format("error : ~p~n", [Error]),
format(Rest);
format([Result|Rest]) when is_list(Result) -> format(Result), format(Rest);
format([_|Rest]) -> format(Rest).
sample_tweet() ->
<<"{
\"coordinates\": null,
\"created_at\": \"Sat Sep 10 22:23:38 +0000 2011\",
\"truncated\": false,
\"favorited\": false,
\"id_str\": \"112652479837110273\",
\"entities\": {
\"urls\": [{
\"expanded_url\": \"http://instagr.am/p/MuW67/\",
\"url\": \"http://t.co/6J2EgYM\",
\"indices\": [67, 86],
\"display_url\": \"instagr.am/p/MuW67/\"
}],
\"hashtags\": [{
\"text\": \"tcdisrupt\",
\"indices\": [32,42]
}],
\"user_mentions\": [
{
\"name\": \"Twitter\",
\"id_str\": \"783214\",
\"id\": 783214,
\"indices\": [0, 8],
\"screen_name\": \"twitter\"
},
{
\"name\": \"Picture.ly\",
\"id_str\": \"334715534\",
\"id\": 334715534,
\"indices\": [15, 28],
\"screen_name\": \"SeePicturely\"
},
{
\"name\": \"Bosco So\",
\"id_str\": \"14792670\",
\"id\": 14792670,
\"indices\": [46, 58],
\"screen_name\": \"boscomonkey\"
},
{
\"name\": \"Taylor Singletary\",
\"id_str\": \"819797\",
\"id\": 819797,
\"indices\": [59, 66],
\"screen_name\": \"episod\"
}
]
},
\"in_reply_to_user_id_str\": \"783214\",
\"text\": \"@twitter meets @seepicturely at #tcdisrupt cc.@boscomonkey @episod http://t.co/6J2EgYM\",
\"contributors\": null,
\"id\": 112652479837110273,
\"retweet_count\": 0,
\"in_reply_to_status_id_str\": null,
\"geo\": null,
\"retweeted\": false,
\"possibly_sensitive\": false,
\"in_reply_to_user_id\": 783214,
\"place\": null,
\"source\": \"<a href=\\\"http://instagr.am\\\" rel=\\\"nofollow\\\">Instagram</a>\",
\"user\": {
\"profile_sidebar_border_color\": \"eeeeee\",
\"profile_background_tile\": true,
\"profile_sidebar_fill_color\": \"efefef\",
\"name\": \"Eoin McMillan \",
\"profile_image_url\": \"http://a1.twimg.com/profile_images/1380912173/Screen_shot_2011-06-03_at_7.35.36_PM_normal.png\",
\"created_at\": \"Mon May 16 20:07:59 +0000 2011\",
\"location\": \"Twitter\",
\"profile_link_color\": \"009999\",
\"follow_request_sent\": null,
\"is_translator\": false,
\"id_str\": \"299862462\",
\"favourites_count\": 0,
\"default_profile\": false,
\"url\": \"http://www.eoin.me\",
\"contributors_enabled\": false,
\"id\": 299862462,
\"utc_offset\": null,
\"profile_image_url_https\": \"https://si0.twimg.com/profile_images/1380912173/Screen_shot_2011-06-03_at_7.35.36_PM_normal.png\",
\"profile_use_background_image\": true,
\"listed_count\": 0,
\"followers_count\": 9,
\"lang\": \"en\",
\"profile_text_color\": \"333333\",
\"protected\": false,
\"profile_background_image_url_https\": \"https://si0.twimg.com/images/themes/theme14/bg.gif\",
\"description\": \"Eoin's photography account. See @mceoin for tweets.\",
\"geo_enabled\": false,
\"verified\": false,
\"profile_background_color\": \"131516\",
\"time_zone\": null,
\"notifications\": null,
\"statuses_count\": 255,
\"friends_count\": 0,
\"default_profile_image\": false,
\"profile_background_image_url\": \"http://a1.twimg.com/images/themes/theme14/bg.gif\",
\"screen_name\": \"imeoin\",
\"following\": null,
\"show_all_inline_media\": false
},
\"in_reply_to_screen_name\": \"twitter\",
\"in_reply_to_status_id\": null
}">>.
sample_github_user() ->
<<"{
\"user\": {
\"gravatar_id\": \"b8dbb1987e8e5318584865f880036796\",
\"company\": \"GitHub\",
\"name\": \"Chris Wanstrath\",
\"created_at\": \"2007/10/19 22:24:19 -0700\",
\"location\": \"San Francisco, CA\",
\"public_repo_count\": 98,
\"public_gist_count\": 270,
\"blog\": \"http://chriswanstrath.com/\",
\"following_count\": 196,
\"id\": 2,
\"type\": \"User\",
\"permission\": null,
\"followers_count\": 1692,
\"login\": \"defunkt\",
\"email\": \"chris@wanstrath.com\"
}
}">>.
Jump to Line
Something went wrong with that request. Please try again.