Google Chrome Dev Channel を使っているのですが、どうやら Google Chrome をアップデートするとこのツールバー自身が消えてなくなる様なのです。この機能のヘビーユーザだったのでかなり困りました。![]()
いろいろ調べたところ、どうやら以下の設定で直す事が出来る事が分かりました。
- chrome://flags/#enable-instant-extended-api を開く
- 設定を「規定」から「無効」に変更する。
- ブラウザを再起動する。
Google Chrome Dev Channel を使っているのですが、どうやら Google Chrome をアップデートするとこのツールバー自身が消えてなくなる様なのです。この機能のヘビーユーザだったのでかなり困りました。![]()
なんびとたりとも俺の前は走らせねぇガチバトルです。
rapidjson - A fast JSON parser/generator for C++ with both SAX/DOM style API - Google Project Hostingfastest をうたうとは度胸があるなーと思いながら、半信半疑で試してみました。
Rapidjson is an attempt to create the fastest JSON parser and generator. Small but complete. Support...
https://code.google.com/p/rapidjson/
#include <rapidjson/document.h>
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
#include <time.h>
int
main(int argc, char* argv[]) {
clock_t t;
t = clock();
for (int n = 0; n < 1000; n++) {
std::stringstream ss;
std::ifstream f;
f.open("foo.json", std::ios::binary);
ss << f.rdbuf();
f.close();
rapidjson::Document doc;
if (doc.Parse<0>(ss.str().c_str()).HasParseError()) {
std::cerr << "parse error" << std::endl;
return 1;
}
rapidjson::Value& entries = doc["entries"];
int i, l = entries.Size();
for (i = 0; i < l; i++) {
std::cerr << entries[rapidjson::SizeType(i)]["title"].GetString() << std::endl;
}
}
std::cout << "score: " << clock() - t << std::endl;
return 0;
}
そして picojson を使ったコード
#include <picojson.h>
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
#include <algorithm>
#include <time.h>
int
main(int argc, char* argv[]) {
clock_t t;
t = clock();
for (int n = 0; n < 1000; n++) {
std::stringstream ss;
std::ifstream f;
f.open("foo.json", std::ios::binary);
ss << f.rdbuf();
f.close();
picojson::value v; ss >> v;
picojson::array a = v.get<picojson::object>()["entries"].get<picojson::array>();
int i, l = a.size();
for (i = 0; i < l; i++) {
std::cerr << a[i].get<picojson::object>()["title"].to_str() << std::endl;
}
}
std::cout << "score: " << clock() - t << std::endl;
return 0;
}
picojson については、std::for_each を使っても見たけど結局自前ループで回した方が速い結果になりました。
g++ -std=c++11 -O2 foo.cxx
でやりました。
rapidjson score: 3559
picojson score: 7961
こうなりました。picojson と比べて rapidjson がほぼ2倍速いという結果になりました。速い理由をソースを見ながら調べてみましたが、rapidjson は STL を使わず、自前で DOM ライクな API を提供しています。また std::string なども使いません。これによってオーバーヘッドを最小限に抑えているのだと思います。Performance - rapidjson - Compares some performance benchmark results of rapidjson 0.1 and other parsers. Also gives some analysis. - A fast JSON parser/generator for C++ with both SAX/DOM style API - Google Project Hostingそれどころか、このスコア表を見ると picojson のスコアは素晴らしいレベルだと分かりました。
Why rapidjson is fast? rapidjson has made use of several techniques to achieve high performance. C++...
https://code.google.com/p/rapidjson/wiki/Performance
psychs/lingr-irc - GitHubperl であれば lingr-ircd
https://github.com/psychs/lingr-irc
tokuhirom/lingr-ircd - GitHubがありますが、Go言語にもあるべきだろ!と思ったので書きました。
https://github.com/tokuhirom/lingr-ircd
mattn/go-lingr - GitHubまず IRC に関係なく Lingr API を操作するライブラリ。そしてそれを使って IRC サーバと見立てる lingr-ircd を書きました。
https://github.com/mattn/go-lingr
$ lingr-ircd -apikey="XXXXX"
これであとはお好きな IRC クライアントから 26667 番ポート(-addr=":26668" の様に変更可能)に接続して lingr をお楽しみ下さい。Go言語 – Lingrゆるふわと、Go言語について語りましょう。
http://lingr.com/room/golang
このブログを応援する