スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

rubyのarrayのデータ操作計算時間

結局よく分からなかった。


codeIQ sandboxより確認してみた。ソースコードは追記より。n = 30000。
前方取り出し、前方挿入 0.8s
後方取り出し、後方挿入 0.01s
前方取り出し、後方挿入 0.66s
後方取り出し、前方挿入 0.16s

かなり差が出ている。


Ideoneがruby-2.1だったので、こちらで確認してみる。
速いので、n = 1000000で検証。既に何か違いを感じる。

前方取り出し、前方挿入 0.57s
後方取り出し、後方挿入 0.55s
前方取り出し、後方挿入 0.57s
後方取り出し、前方挿入 0.56s

差は無いですね。気にする必要は無さそう。


codeIQでrubyを提出する際は、ジャッジシステムが更新されない限り、配列操作は控えた方が良いかもしれません。
queueの実装どうするんだろう。

ruby1.9は動作が遅い等の記事がいくつかあるようです。



前方取り出し、前方挿入
n = 30000
a = Array.new(n)
n.times{|i|
a[i]=i
}
n.times{
e=a.shift
a.unshift(e)
}
p a.size


後方取り出し、後方挿入
0.01s
n = 30000
a = Array.new(n)
n.times{|i|
a[i]=i
}
n.times{
e=a.pop
a.push(e)
}
p a.size


前方取り出し、後方挿入
n = 30000
a = Array.new(n)
n.times{|i|
a[i]=i
}
n.times{
e=a.shift
a.push(e)
}
p a.size


後方取り出し、前方挿入
n = 30000
a = Array.new(n)
n.times{|i|
a[i]=i
}
n.times{
e=a.pop
a.unshift(e)
}
p a.size

スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : Ruby

コメントの投稿

非公開コメント

「実行くん」じゃなくて「じっくりくん」

舞葉さん、こんにちは。

先日、CodeIQで珍しく「難問」タグがついている問題(見たのは某コラボ問題に続いて2度目)をRubyで書いて提出したら、後半のテストケースでTLEしました。
共通する計算を纏めるなど、色々と工夫してもやはりTLEになってしまいます。
もしやと思ってCで同じアルゴリズムで書いたら、sandboxで0.02秒、本番で00.0秒正解でした。
ということで「RubyでTLEしたら、工夫するよりC系を使って書け」を肝に銘じました。

P.S. 2回目の一番乗りゲットおめでとうございます

Re: 「実行くん」じゃなくて「じっくりくん」

コメントありがとうございます

> 「難問」タグがついている問題
アイテム類似度云々の問題ですね。僕はC++11でクリアしています。sortを何度も呼び出したりsqrtも取り除いていないのに。

codeIQで言語で有利不利になるような問題といえば、evalや正規表現、多倍長整数を扱うような実装系の問題ばかりだったので、
実行速度の関係で制限されるのは珍しいなと思います。

入力が多い数値系の問題はcodeIQでも初めからCで書くべきでしょうか・・・。


> P.S. 2回目の一番乗りゲットおめでとうございます
ありがとうございます。
3回目も取ってしまったような気がするので一番乗り狙いはそろそろ引退するかもです。
ブログ移転のお知らせ
ブログをshonen.hateblo.jpに移転します. 新規の記事はこちらに投稿します.
プロフィール

舞葉(ぶよう)

Author:舞葉(ぶよう)
github.io
はてなブログ(競プロ)

古い記事のソースコードは色分けしていないので、高機能テキストエディタに貼り付けたほうが見やすいかも。

検索フォーム
このブログについて
自分がつまづいた話題、なんとなく書きたいと思ったこと、ググったけど殆ど資料なかったぞオイ な話等をアップする予定。通りすがりでも、参考になっていただければと。プログラムの例外入力、メモリリークは責任負いません。投稿された記事は修正・削除する場合があります。
カテゴリ
タグ

HSP3アルゴリズムとデータ構造c++RubyJavaUnity画像解析C機械学習C#LinuxcodeIQKinectMinecraftTonyuSystemraspberrypiPythonHTML5音声制御Simulinkruby俺ルール通信制御Javascriptシミュレーション

counter-shinobi
固定記事
最新記事
最新コメント
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

アクセスランキング
[ジャンルランキング]
コンピュータ
635位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
94位
アクセスランキングを見る>>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。