XPeria Z3 (Android5.0.2) からiPhone7に変えた
どうも、僕です。
最近はちょっと色々やることが多くて死にそうなのですが、現実逃避やストレス発散(?)を兼ねて、以前から検討していたスマートフォンの機種変更に至りました。
今回得られた知見とかを共有できたらと思います。
AndroidからiOSに乗り換えて
元々iPhone5sを使ってたということもあり、iOSにはそこまで疎くない(?)のですが、やはりそれでも最新のiPhoneだとスペックがもう違いますね。
同じ操作してもサクサク度が違います。驚きました。
Androidと比較しますと、最近のAndroidは端末がある程度名のしれたやつならば、スペックも悪くないはずなのでそこまで大差ないかと思います。
通知周りが激変したのは、また慣れが必要ですけどね…。
機種変更について
代理店(ド○モショップ、エー○ーショップ、ソフ○バンクショップ)にも足を運んだのですが、まさかの頭金を請求されるという。
2つほどはしごしたのですが、1軒目は何も言わずに頭金を組み込んだ上で端末の合計金額を提示してきた上、それはどういう計算で算出したのかと言われてもあれこれ言われた上に、色がないだとかで色々いわれて鬱陶しくなって脱出しました(色なだけに!)。
2軒目は、さりげなく頭金を提示してきたのですが、僕の謎のしつこさスキルで頭金であるとゲロりました。以下、そのやり取り。
店員「今回、あらかじめ5,000円のお支払が必要です」
僕「え?その5000円ってこの分割とは別ですか?」
店員「あとで安くする方法教えてます」
僕「あとでじゃなくて、それって端末代とは関係ないですよね?その計算だと端末代+5,000円なんですけど」
店員「頭金という形でして」
僕「じゃあいいっす」
とりあえず頭金は無駄なので、とっとと退散しましょう。
結局何処で買ったの
某量販店です。頭金不要の上、色も豊富で色々サービスしてくれたので(色なだけに!2回目)。
個人的には煩わしさがあったので、次からは今回買った量販店が同じ調子ならそこで買いますし、そうでないならば公式のオンラインで買おうかなあと。
そのほうが色々楽そうですし。
まとめ
料金についてはあらかじめシミュレーションしておこう!(知らないと損する可能性もある)
オンラインショップとか優良量販店を使おう!
Anker?プレミアムライトニングUSBケーブル?Apple認証 コンパクト端子?ホワイト0.9m A7101021
- 出版社/メーカー: Anker
- メディア: エレクトロニクス
- この商品を含むブログ (8件) を見る
Amazonベーシック Apple認証 ハイクオリティー ライトニングUSB充電ケーブル 小型ヘッド設計 ホワイト 約90cm
- 出版社/メーカー: AmazonBasics
- 発売日: 2015/09/01
- メディア: Wireless Phone Accessory
- この商品を含むブログ (2件) を見る
Amazonベーシック Apple認証 ハイクオリティー ライトニングUSB充電ケーブル 小型ヘッド設計 ブラック 約90cm
- 出版社/メーカー: AmazonBasics
- 発売日: 2015/09/01
- メディア: Wireless Phone Accessory
- この商品を含むブログを見る
Japan.R 2016にてLTをしました #JapanR
3ヶ月以上前の話ですが、Japan.RにてLTをしました。
なぜに今頃かといいますと、思い出したからという感じです。
Japan.Rとは
日本各地で統計処理ソフトウェアである R に関する勉強会が行われています。 Fukuoka.R、 HiRosima.R(HijiyamaR)、 Kashiwa.R、 Kobe.R、 Nagoya.R、 Okinawa.R(沖縄 R 同好会)、 Osaka.R、 SappoRo.R、 Shiga.R、 Tokyo.R、 Tsukuba.R、 Yamadai.R、 Yokohama.R というように日本各地で開催されています。これらの勉強会の主催者や参加者が年に一度集まって開催されるイベントが Japan.R です。
去年は副主催とかいう謎の立ち位置の僕でしたが、今年は何してたのかというと、運営の人の邪魔にならない程度に寝てました(嘘)。
何を発表したのか
LINE。みなさん使ってると思います。使ってない人は…まあいるとは思いますが、今回はそれは置いといて。
LINEに解析結果とかそもそも解析終わったよみたいなのを飛ばせたら最高ですよね。ってことでそれをしてくれる野良パッケージを作りましたよって話です。
パッケージ作り裏話
私は学校の同期とかと比較してもめちゃくちゃ意識が低いので、最近よくみかけるなければつくるそれが(以下略)の方々ほど強い意志はなかったのですが、とりあえず直近で必要になったから作ったという感じです*1。
それだけ急を要してたという割には、Japan.Rがはじまった時間から作り始めて、LTの手前に作り上げるという謎の縛りルールを適用しました。
ゲームとかでもそうですけど、縛りルールはスリルを味わえるのでおすすめです。
あと、Rのパッケージをつくるのは実は今回が初めてだったので、コンパイル周りで手間取った気がします。肝心のRのコード自体は割と楽にかけたと言うね。
LINE Notify自体は、所定のAPIを叩けば問題なく出来ます。個人的にはUNIX環境ならcurlでやるのがオススメですが…笑。
スライド
LINE Notifyの今後
とりあえず画像送信とか対応したいです。あとエンコード周りが悲惨なんで日本語対応にさせたいです。
あとReadmeはきちんと書きたいです。
そんな感じです。
今後
Tokyo.Rには学部4年から参加していますが、この3年間で色々お世話になったので、貢献したいと考えています。
何するかはきめてませんが…。
LINEモバイル データSIM(SMS付き)エントリーパック (ナノ/マイクロ/標準SIM)[カウントフリー・iPhone/Android共通・ドコモ対応] LMN-AMA01
- 出版社/メーカー: LINEモバイル
- 発売日: 2016/11/22
- メディア: エレクトロニクス
- この商品を含むブログを見る
- 作者: Rサポーターズ,安部晃生,市川太祐,酒巻隆治,戸嶋龍哉,福島真太朗,和田計也,里洋平,津田真樹
- 出版社/メーカー: 技術評論社
- 発売日: 2017/03/22
- メディア: 大型本
- この商品を含むブログを見る
Rによるデータサイエンス(第2版) データ解析の基礎から最新手法まで
- 作者: 金明哲
- 出版社/メーカー: 森北出版
- 発売日: 2017/03/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 作者: Hadley Wickham,石田基広,市川太祐,高柳慎一,福島真太朗
- 出版社/メーカー: 共立出版
- 発売日: 2016/02/10
- メディア: 単行本
- この商品を含むブログ (29件) を見る
イケてる大人 イケてない大人 シニア市場から「新大人市場」へ (光文社新書)
- 作者: 博報堂新しい大人文化研究所
- 出版社/メーカー: 光文社
- 発売日: 2017/03/16
- メディア: 新書
- この商品を含むブログを見る
*1:別に某団体?を批判しているわけではありませんのであしからず
意識の低い学生が書く就職活動のあれこれ
どうも、私です。
就職活動が明日から解禁だそうなので、知らなくてもいいけど、知っててもいいかもしれないことだけ書いていきます。
色々やることあるんですが、現実逃避の記事です。
先に簡単に経歴を書きますと、2015年に修士課程に入学し、2017年に修了&入社予定で、推薦は一切使いませんでした。
僕の所属する研究科・専攻は比較的、メーカーにいくか、IT系にいくかが大半なので、推薦のリクルーター面接なり、コーディング試験なりで失敗しないようにした方がいいかもしれません。
説明会解禁以降(3月以降)
合同説明会
色々な会社がそれぞれのブースで簡単に会社説明するやつです。
興味ある会社があると行ってみたら良いと思いますが、学生が興味持つ会社っていうとどうしても知ってる企業になりがちなので、混み合います。
冗談抜きで混み合います。
私は学内のやつだけいきました。某コミケ会場とかでも行われてたりしますけど、よほどの強い意志がない限り交通費が無駄な気がします。
あと、秋葉原で開かれてた大学限定のやつも1日だけ覗きました。まあ行った理由は、合説ではなく、Amazonギフt…ゲフンゲフン。
服装は、一応スーツで行きました。よくわからん時はスーツ安定。
人混みが苦手な私にとっては、合説は苦行でしかなかったので、よほど興味のある会社やノベルティグッズが良い会社じゃない限りはあえて人気のないブース(自分以外誰も居ないブース)を中心に回ってました。
そういうブースって1対1なんで、色々教えてくれたりします。正直、この時に教えてもらったことが結構後に響いてきたりしたんで…。
マイページ登録
3/1の午前0時になると、リク○ビとかマ○ナビとかと同じく解禁するやつです。
正直、なぜみんな0時になって必死にアクセスするのかよくわかりません。
基本的には、個別の企業ごとに自分で登録するか、合説とかで貰う紙に書いたら登録してくれたりします。
まあみんな必死になりますけど、焦んなってって話です。
企業説明会
マイページに登録したら一覧となって出てきます。
ここでは、業界ごとにスタンプラリーと言われたりするところもあるそうです。大変だなあ。
ここで意識の高い学生は、頑張って質問したり、質問時に「○○大学○○学部○○ゼミ(または研究室)所属の〜〜です」とか言ってたりします。都市伝説だと思ったらほんとにいました。聞いてる側もうんざりするのでやめたほうが良いかもです。ただ、聞きたいことを聞いてくれた時は助かりますが。
大学毎の説明会とか、大学関係なしのやつとか色々あります。
自分のスケジュールと照らし合わせて考えたら良いでしょう。
ちなみに私は、興味のある会社となんかプレゼント貰えるという噂を聞いたところを行きました。どんだけ意識低いんだ。
面接
気づいたら始まってます。急に電話きてOBと会うパターンはリクルーター面接ってやつです。
なので、失礼のないようにしましょう。
よくある質問は、「志望動機(会社そのものと業界全体)」、「強み弱み」あたりでしょうか。
面接対策本読むくらいならば、ワ○キャリアとか外資○活ドットコムに載ってるような(信頼できるか不明な)体験談読んでる方がまだましです。
悲しいことに落ちる時は落ちます。落ちない時はびっくりするくらい話がスムーズに進みます。
エントリーシート・Webテスト・テストセンター
エントリーシートは、質問に対してきちんと答えたらまずまず大丈夫です。
あと一発勝負で書かないで、書いた後見直したら良いでしょうとしか。
昔、友人のESを見たことあるのですが、とにかく誤字脱字変換ミス、文法的な誤りがあって、読むのがしんどかった記憶があります。
あとは社会的にNGなこと書かなければ、大丈夫かと。
Webテストとテストセンターはせっかく参考書買ったのに、問題形式の確認で読んだくらいでした。業界によっては高い水準が求められるそうです。
その他
イベント(説明会や面接など)をハシゴしてしまうときもあると思います。都内ならば、東京メトロの24時間乗車券とか便利です。
これは、最初に改札通してから24時間後までならば、改札通すと乗り放題です。23時間59分経過した時に改札通しても大丈夫です(今後仕様が変わるかもしれません)。
正直、この記事で一番有用なのはここだけだと思います。
最後に
一切会社名や具体的な話は触れずに書こうと思うと、これくらいしか書けません。
初稿の段階では書き忘れてたのですが、就職偏差値とか就職難易度はあんまりあてにしないほうが良いです。あれ、出してる人は全社受けたわけじゃないんでしょ?いちいち気にしてるような人は自分の意思決定すら自分でできないのかなって思ったりします。
そういうの気にしてる暇あったら、美味しいご飯食べるなり寝るなりした方がいいです。
個別に相談の場合は、知ってる後輩ならばできる範囲でのります・・・たぶん。
- 作者: 東洋経済新報社,東経=
- 出版社/メーカー: 東洋経済新報社
- 発売日: 2016/12/02
- メディア: 単行本
- この商品を含むブログ (1件) を見る
必勝・就職試験! 【玉手箱・C-GAB対策用】8割が落とされる「Webテスト」完全突破法【1】【2018年度版】
- 作者: SPIノートの会
- 出版社/メーカー: 洋泉社
- 発売日: 2016/09/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 作者: SPIノートの会
- 出版社/メーカー: 洋泉社
- 発売日: 2016/11/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 作者: オフィス海
- 出版社/メーカー: ナツメ社
- 発売日: 2016/04/15
- メディア: 単行本
- この商品を含むブログを見る
【主要3方式〈テストセンター・ペーパー・WEBテスティング〉対応】これが本当のSPI3だ! 【2018年度版】
- 作者: SPIノートの会,津田秀樹
- 出版社/メーカー: 洋泉社
- 発売日: 2016/06/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
よくあるQ&A
Q: OB訪問した?
A: 知り合いの先輩または電話かかってきたリクルーター以外は話聞いてないです
Q: 何社受けた?
A: 覚えてる限りだと1桁くらいです(ES出したのが)
Q: 学部の時は就活した?
A: 大学院進学決めちゃってたくらい意識が低いのでしてるわけがないです
Q: 外資受けた?
A: 国内より選考が早いのと、就活生が意識高い系なのかほんとに意識高い人なのか知りたくて少し受けました
Q: 面接落ちたことある?
A: そりゃあるけど、あくまでその時の自分とは縁がなかったのだと今では考えています
Q: もう1回就活したい?
A: どちらでもないです
【R Advent Calendar 2016】Hydrogenはいいぞ
みなさんいかがお過ごしでしょうか。私は最近色々辛かったです。
楽しい日々って有限なんだなと思います。
さて、この記事は「R Advent Calendar 2016」15日目の記事です。
はじめに
先日、水素水を買いました。高かったです。
おいしかったです。また飲みたいです。
伊藤園 進化する水 水素水 (ボトル缶) 410ml×24本
- 出版社/メーカー: 伊藤園
- 発売日: 2016/04/11
- メディア: 食品&飲料
- この商品を含むブログを見る
Hydrogen
Hydrogenとは、Atom上でREPLできる素晴らしいパッケージです。
仕組みとしては、表向きはAtomですが、裏でJupyter Notebookを動かしているという感じです。
私は、Pythonでごにょごにょするときは基本Hydrogenを使っていたのですが、最近はRを書く際にもその波が…。
インストール方法
JupyterとIRKernelの導入
僕はPython3派なのですが、hydrogenのビルドを行う際にはPython2系が必要なので2系も導入します。
Pyenvがインストールされていることを前提として、Pythonのインストール例を示します。
まずPython3系の環境構築を行います(pipのバージョンは違うかもしれません)。
Youchan@Sunshine_Macbook ~ $ pyenv install 3.5.2 Youchan@Sunshine_Macbook ~ $ pyenv global 3.5.2 Youchan@Sunshine_Macbook ~ $ pip -V pip 9.0.1 from /Users/Youchan/.pyenv/versions/3.5.2/lib/python3.5/site-packages (python 3.5) Youchan@Sunshine_Macbook ~ $ pip install jupyter
次にRStudioを起動し、以下を実行します。
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest')) devtools::install_github('IRkernel/IRkernel')
「ターミナル上でRを開いて」以下を入力し、実行します。
Youchan@Sunshine_Macbook ~ $ R (以下略) 'q()' と入力すれば R を終了します。 >IRkernel::installspec()
これでJupyter NotebookでのIRKernelの導入が完了しました。 試しに
Youchan@Sunshine_Macbook ~ $ jupyter notebook
と入力し、Jupyterを起動すると以下のようになっているはずです。
Hydrogenのインストール
Python2系の環境構築を行います。
Youchan@Sunshine_Macbook ~ $ pyenv install 2.7.12 Youchan@Sunshine_Macbook ~ $ pyenv global 2.7.12 Youchan@Sunshine_Macbook ~ $ pip -V pip 8.1.1 from /Users/Youchan/.pyenv/versions/2.7.12/lib/python2.7/site-packages (python 2.7) Youchan@Sunshine_Macbook ~ $ pip install jupyter
これでPython2系に切り替わりました。
Youchan@Sunshine_Macbook ~ $ apm install hydrogen Youchan@Sunshine_Macbook ~ $ apm install language-r Youchan@Sunshine_Macbook ~ $ pyenv global 3.5.2
次にkernelspecの情報を取得します。
Youchan@Sunshine_Macbook ~ $ jupyter kernelspec list --json { "kernelspecs": { "python3": { (以下略) } } }
この{}内を全てコピーしてください。
Atomを起動し、Preferences -> Packages -> hydrogen -> Settings を開きます。
Kernel Specsのところに先程コピーした内容をペーストします。
これで完全に準備完了です。
実際にやってみた
Atomを起動します。
右下の「Plain Text」をクリックし、Rと入力してEnter。
Rのコードを入力します。
実行したい部分を選択し、 Cmd(Ctrl) + Enterで実行。
どうでしょうか?Atomを使うことでトライアンドエラーを繰り返しながら、イケてるデータ分析ができます。
RStudio、最近起動しなくなってごめん。
おわりに
Hydrogenはいいぞ。
ガールズ&パンツァー 劇場版 (特装限定版) [Blu-ray]
- 出版社/メーカー: バンダイビジュアル
- 発売日: 2016/05/27
- メディア: Blu-ray
- この商品を含むブログ (30件) を見る
IPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集
- 作者: Cyrille Rossant,菊池彰
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/25
- メディア: 大型本
- この商品を含むブログ (1件) を見る
Atom実践入門──進化し続けるハッカブルなエディタ (WEB+DB PRESS plus)
- 作者: 大竹智也
- 出版社/メーカー: 技術評論社
- 発売日: 2016/07/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
改訂2版 データサイエンティスト養成読本 さくっとレビュー
はじめに
これは技術書献本大感謝 Advent Calendar 2016 9日目の記事です。
改訂2版 データサイエンティスト養成読本をご恵贈いただきました。ありがとうございます。保存用、観賞用、布教用のうちの観賞用として使用しています。
今後ともよろしくお願いします。
改訂2版 データサイエンティスト養成読本 [プロになるためのデータ分析力が身につく! ] (Software Design plus)
- 作者: 佐藤洋行,原田博植,里洋平,和田計也,早川敦士,倉橋一成,下田倫大,大成弘子,奥野晃裕,中川帝人,長岡裕己,中原誠
- 出版社/メーカー: 技術評論社
- 発売日: 2016/08/25
- メディア: 大型本
- この商品を含むブログ (1件) を見る
内容
巻頭企画:データサイエンティストの仕事術
第1章:データサイエンティストに必要なスキル
第2章:データサイエンスのプロセス
第3章:「ビッグデータインフラ」入門
特集1:データ分析実践入門
第1章:Rで統計解析をはじめよう
第2章:RStudioでらくらくデータ分析
第3章:Pythonによる機械学習
第4章:データマイニングに必要な11のアルゴリズム
特集2:マーケティング分析本格入門
第1章:Rによるマーケティング分析
第2章:mixiにおける大規模データマイニング事例
第3章:ソーシャルメディアネットワーク分析
特別記事:Fluentd入門
特別企画:データ分析のためにこれだけは覚えておきたい基礎知識
第1章:SQL入門
第2章:Webスクレイピング入門
第3章:Tableau実践入門
さくっと評価
良い点
ある程度プログラムを書いたことがある人ならば、データ分析に関連する「〜したい!」という目的を達成する際に良い道標となると思います。
また、本書は比較的「浅く広く」という内容であり、「深く狭く」ということを求めている人には不向きかと思われます。
加えて、ある程度データ分析に携わってらっしゃる方から見ても、新しい発見を得られるのではないかと思います。私自身、データ分析を生業としている人間ではないですが、「なるほど、これに〜が使えるな!」とか思うことが多かったです。さらに、実際にサンプルのコードが記載されていること、そして(実際に運用で使われる際に)必要十分な説明がなされていることも良い点だと思います。
また類書にはない、Tableau入門や、Webスクレイピング入門など幅広く扱っている点も良いところかと思います。幅広いとはこのことを言うのでしょう。
うーんな点
正直、エンジニアだとか、データ分析またはプログラムを書いたことない人には辛すぎるかなという感じがします。
対象読者層の範囲外だから仕方ないといえばそうかもしれませんが、「とりあえず今からデータサイエンティストになるぞ!(宣言)」な方には辛いかなと思います。
それぞれのツールや統計的手法についてもう少し基礎的な面から理解するには別書が必要かと思います。
今後、初心者向けに何かの本があれば、その次に読むべき本として紹介できるかと。(そういう本が出ることを期待して)
おすすめのところ
特集1のデータ分析実践入門です。データマイニングに必要なアルゴリズムを網羅しているだけでなく、本書では珍しくPythonを使った機械学習をしてみたり…(基本的に本書では、Rでのデータ分析がメインだと思います)。
まだ学生ということもありその目線で書きますと、学生でまだデータ分析の理論の一部を習っただけの方、もしくは全く何も知らないという方にぜひ読んで欲しい部分かと思います。もちろん、これだけが全てではないですが、何をすべきか、何を勉強するとよいかのヒントが得られると思います。
最後に
みなさん是非買いましょう。え?まだだって?
下のリンククリックすれば買えますよ!!
改訂2版 データサイエンティスト養成読本 [プロになるためのデータ分析力が身につく! ] (Software Design plus)
- 作者: 佐藤洋行,原田博植,里洋平,和田計也,早川敦士,倉橋一成,下田倫大,大成弘子,奥野晃裕,中川帝人,長岡裕己,中原誠
- 出版社/メーカー: 技術評論社
- 発売日: 2016/08/25
- メディア: 大型本
- この商品を含むブログ (1件) を見る
今回はさくっと書評しましたが、〜のファッションチェック並の書き方でも良いかななんて思いました。
また献本してくださる優しい方がいらっしゃるといいですね…。
データサイエンスLT祭り 2夜目 にて発表を行いました(報告)
お久しぶりです。最近は研究室にてずっと作業をしています。
さて、データサイエンスLT祭りというイベントがありまして、そちらで発表しました。
発表内容は、マッチングアルゴリズムについてで、この内容に興味を持ったのは、たまたま実験を回しているときに適当に読んでいた論文の1つに、今から紹介するマッチングアルゴリズムをとある着眼点から応用したもので、面白かったためです。
そちらの論文の内容については今回の話とは無関係なので割愛しますが、実際に手を動かしながら理解するのはやっぱり楽しいなあと思った次第です。
スライドは↓です。ネタ要素が強いですが、実際のアルゴリズムの流れあたりは(僕の割には)頑張った方(?)なので、ぜひ。
【C++】配列とVectorとArrayで比較
きっかけ
以前、C++で実装した際に、コードを読まれた方からなんでVectorにしないの?と聞かれたことがありました。
機能面での違いはたしかにありますが、固定サイズならば別に配列でもOKではと思っていたのですが、ふと気になったので調べてみました。
比較対象
比較した方法は次の4通りです。
Vector同士で比較しているのは、配列っぽく使うパターンと、push_backで代入させた場合のものの2種類です。
push_backは遅いと書いていらっしゃる方もいたので、比較として入れてみようと思い、含めました。
コード
ダメダメながらも書いたコードは次に続きます。
やったことはすごく単純で、10万のデータを作って、そのデータから総和を求めるという操作です。
もっと良いベンチマークがあるかもしれませんが…。
配列(一番最初に習うであろうもの)
#include <iostream> #include <cstdio> #include <vector> #include <array> #include <chrono> int main(int argc, char const *argv[]) { std::chrono::system_clock::time_point start, end; double elapsed; const long int MAX = 100000; long int a[MAX+1]; // Array start = std::chrono::system_clock::now(); for (long int i = 0; i <= MAX; i++) { a[i] = i; } long int sum1 = 0; for (long int i = 0; i <= MAX; i++) { sum1 += a[i]; } end = std::chrono::system_clock::now(); elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end-start).count(); std::cout << elapsed << "μs" << std::endl; return 0; }
↑の修正版
#include <iostream> #include <cstdio> #include <vector> #include <array> #include <chrono> int main(int argc, char const *argv[]) { std::chrono::system_clock::time_point start, end; double elapsed; const long int MAX = 100000; long int a[MAX+1] ={}; // Array start = std::chrono::system_clock::now(); for (long int i = 0; i <= MAX; i++) { a[i] = i; } long int sum1 = 0; for (long int i = 0; i <= MAX; i++) { sum1 += a[i]; } end = std::chrono::system_clock::now(); elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end-start).count(); std::cout << elapsed << "μs" << std::endl; return 0; }
Vector(配列っぽく)
#include <iostream> #include <cstdio> #include <vector> #include <array> #include <chrono> int main(int argc, char const *argv[]) { std::chrono::system_clock::time_point start, end; double elapsed; const long int MAX = 100000; std::vector<long int> b1(MAX); // vector(like Array) start = std::chrono::system_clock::now(); for (long int i = 0; i <= MAX; i++) { b1[i] = i; } long int sum2 = 0; for (long int i = 0; i <= MAX; i++) { sum2 += b1[i]; } end = std::chrono::system_clock::now(); elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end-start).count(); std::cout << elapsed << "μs" << std::endl; return 0; }
Vector(push_back)
#include <iostream> #include <cstdio> #include <vector> #include <array> #include <chrono> int main(int argc, char const *argv[]) { std::chrono::system_clock::time_point start, end; double elapsed; const long int MAX = 100000; std::vector<long int> b2; // vector(push_back) start = std::chrono::system_clock::now(); for (long int i = 0; i <= MAX; i++) { b2.push_back(i); } long int sum3 = 0; for (long int i = 0; i <= MAX; i++) { sum3 += b2[i]; } end = std::chrono::system_clock::now(); elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end-start).count(); std::cout << elapsed << "μs" << std::endl; return 0; }
Array(C++11から追加されたもの)
#include <iostream> #include <cstdio> #include <vector> #include <array> #include <chrono> int main(int argc, char const *argv[]) { std::chrono::system_clock::time_point start, end; double elapsed; const long int MAX = 100000; std::array<long int, MAX> c; // C++11's Array start = std::chrono::system_clock::now(); for (long int i = 0; i <= MAX; i++) { c[i] = i; } long int sum4 = 0; for (long int i = 0; i <= MAX; i++) { sum4 += c[i]; } end = std::chrono::system_clock::now(); elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end-start).count(); std::cout << elapsed << "μs" << std::endl; return 0; }
↑の修正版
#include <iostream> #include <cstdio> #include <vector> #include <array> #include <chrono> int main(int argc, char const *argv[]) { std::chrono::system_clock::time_point start, end; double elapsed; const long int MAX = 100000; std::array<long int, MAX> c = {}; // C++11's Array start = std::chrono::system_clock::now(); for (long int i = 0; i <= MAX; i++) { c[i] = i; } long int sum4 = 0; for (long int i = 0; i <= MAX; i++) { sum4 += c[i]; } end = std::chrono::system_clock::now(); elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end-start).count(); std::cout << elapsed << "μs" << std::endl; return 0; }
結果
単位はすべて、μsことマイクロ秒(100万分の1秒)。
rev2とついてるものは修正版です。
Ruby@Kotori-no-MacBook-Pro ~/Desktop $ ./array.out 792μs Ruby@Kotori-no-MacBook-Pro ~/Desktop $ ./array_rev2.out 489μs Ruby@Kotori-no-MacBook-Pro ~/Desktop $ ./vector_like_array.out 603μs Ruby@Kotori-no-MacBook-Pro ~/Desktop $ ./vector_push_back.out 2962μs Ruby@Kotori-no-MacBook-Pro ~/Desktop $ ./array_cpp11.out 827μs Ruby@Kotori-no-MacBook-Pro ~/Desktop $ ./array_cpp11_rev2.out 528μs
やっぱりpush_backは遅いですね。
Vectorを配列っぽく使うと配列と変わらない速度みたいです。
あと意外にもC++11から追加されたArrayはわずかながら配列より遅いみたいです。なぜでしょうか。
と思っていましたが、初期化を行ったうえで再実験行ってみたら配列が一番高速でした。次に、Array(C++11以降)が速いという結果となりました。
まとめ
今後はVectorを配列っぽく使います。
いや、修正した結果、配列が速かったのでやっぱり配列が一番ですね。
追記1(2016.07.09 0:27 UTC+9)
一部のコードを修正前のものを記載していました。修正しました。
なお、結果は修正後のものを記載しているため、変化ありません。
追記2(2016.07.09 0:52 UTC+9)
研究室の先輩(id:togatogah)から、「配列とArray(C++11以降)の初期化されていない可能性があるのに対し、Vectorは構築時に必ず初期化を行うので、配列とArrayを初期化してみてはどうか」という提案がありました。
そこで試してみたところ、大きく結果が変わりました。
id:togatogahさんありがとうございました。
ファニーナイツ ご注文はうさぎですか?? シャロ 1/7スケール PVC製 塗装済み 完成品 フィギュア
- 出版社/メーカー: 青島文化教材社
- 発売日: 2016/05/19
- メディア: おもちゃ&ホビー
- この商品を含むブログ (4件) を見る
猫でもわかるC++プログラミング 第2版 (猫でもわかるプログラミング)
- 作者: 粂井康孝
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/07/27
- メディア: 単行本
- この商品を含むブログ (2件) を見る
- 作者: ビャーネ・ストラウストラップ,Bjarne Stroustrup,柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/02/28
- メディア: 大型本
- この商品を含むブログ (11件) を見る
手帳型スマホケース?iPhone6/6S専用?ご注文はうさぎですか???05 シャロ
- 出版社/メーカー: A3
- 発売日: 2016/07/09
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る