覚書

日々学んだことをつらつらと

ArrayList とLinkedList のadd()速さ比べ

環境 Windows 64bit jdk1.8.0_66

以下、検証コード

ArrayList::addとLinkedList::addの速度比較

結果

==============================================
 1回目 ArrayListへのAdd速度  :    797418 
 1回目 LinkedListへのAdd速度 :   3009908 
==============================================
==============================================
 2回目 ArrayListへのAdd速度  :   1820936 
 2回目 LinkedListへのAdd速度 :   1659835 
==============================================
==============================================
 3回目 ArrayListへのAdd速度  :   1784859 
 3回目 LinkedListへのAdd速度 :   1707108 
==============================================
==============================================
 4回目 ArrayListへのAdd速度  :   1812539 
 4回目 LinkedListへのAdd速度 :   1931342 
==============================================
==============================================
 5回目 ArrayListへのAdd速度  :   1708974 
 5回目 LinkedListへのAdd速度 :   1655791 
==============================================
==============================================
 6回目 ArrayListへのAdd速度  :   1534499 
 6回目 LinkedListへのAdd速度 :   1523615 
==============================================
==============================================
 7回目 ArrayListへのAdd速度  :   1543830 
 7回目 LinkedListへのAdd速度 :   1472920 
==============================================
==============================================
 8回目 ArrayListへのAdd速度  :    814212 
 8回目 LinkedListへのAdd速度 :    801149 
==============================================
==============================================
 9回目 ArrayListへのAdd速度  :    738326 
 9回目 LinkedListへのAdd速度 :   1438088 
==============================================
==============================================
10回目 ArrayListへのAdd速度  :    869570 
10回目 LinkedListへのAdd速度 :    755432 
==============================================
==============================================
11回目 ArrayListへのAdd速度  :    821676 
11回目 LinkedListへのAdd速度 :    648135 
==============================================
==============================================
12回目 ArrayListへのAdd速度  :    682345 
12回目 LinkedListへのAdd速度 :    578470 
==============================================
==============================================
13回目 ArrayListへのAdd速度  :    676125 
13回目 LinkedListへのAdd速度 :    502895 
==============================================
==============================================
14回目 ArrayListへのAdd速度  :    657776 
14回目 LinkedListへのAdd速度 :    495432 
==============================================

結論:余り変わらない。少しは違うけど、1万件で0.1秒も変わらないならスロークエリを直した方が良い。

8回目ぐらいからJITの影響か早くなっている。

SourceTreeの外部DiffでMacVimを使う話

SourceTreeの外部diffでMacVimを使う時に、いくつか問題が発生したのでメモ

発生した問題

①SourceTreeから渡されるパスが"/"が2つ連続していてMacVimがそのパスを開けない ②diffツールにmvimdiffを使うと、内容が表示されない。

原因

①SourceTreeの不具合?わからん。。。。
②mvimdiffはプロセスをwaitしないモードで起動する様子
        ↓
 mvimdiffをwaitしないので、制御が親プロセスに即戻る
        ↓
 制御が戻ると渡されるファイルは消える(一時ファイルの様子)
        ↓
 Vimで開くときにはもうファイルが消えている

解決策

SourceTreeから直接mvimdiffを呼ぶのではなく、シェルスクリプトを間に噛ませた。

#!/bin/sh
LOCAL_PATH=`echo $1 | sed -e 's/\/\//\//g'`
REMOTE_PATH=`echo $2 | sed -e 's/\/\//\//g'`
/Applications/MacVim.app/Contents/MacOS/Vim -g -f -d $LOCAL_PATH -d $REMOTE_PATH

①に対しては、"//"を"/"にsed
②に対しては、Vimの引数を調べて、子プロオプション + diff モードで起動
するようにして対策した。

SourceTreeの方は以下のように設定する f:id:gihara2624:20151226213808p:plain


Vimの引数調べるの面倒だった。。。

brew cask が出来なくて困った話

brew cask でvirtualboxvagrantを入れようとしたら、caskが上手く動かずエラーになった。
大体以下の様な形

$ brew cask list Error: Cask 'xxxxx' definition is invalid: Bad header line: parse failed

解決策としては

brew upgrade

を実行することだった。brew updateだけでは駄目な様子。一緒にやってくれたらいいのに…

git checkout で error が発生する理由が解らなかった話

checkoutで、以下のエラーが出力された。

$ git checkout hoge
error: Your local changes to the following files would be overwritten by checkout:
foo/bar
Please, commit your changes or stash them before you can switch branches.
Aborting

status を見ても、何も変更が無い。

$ git status
On branch hoge
Your branch is up-to-date with 'origin/hoge'.
nothing to commit, working directory clean

謎…。意味分からん。。。と思っていたら --skip-worktreeをしていたことを忘れていた。

--skip-worktreeを解除して、無事checkout出来た。めでたしめでたし。

メモ

  • --skip-worktree状態のファイルを探す方法

    git ls-files -v | grep ^S

  • --assume-unchanged状態のファイルを探す方法

    git ls-files -v | grep "^[a-z]"

rubyで初めて遊んでみた

rubyで初めて遊んでみた。

  • Javaのリスト = rubyの配列
  • ハッシュの初期化で使う => 演算子はわかり辛い気が・・・
  • ↑やはりコロン使う方式も途中で入ったみたい
  • rubyperlLispの影響を受けてると聞いたけど、perlと似てるところあるなぁ・・・
  • 整数と文字列は指定するのか。perlは指定なしだったのに・・・
  • ++ でインクリメントされないのね・・・
  • 動的型付け言語だけど、微妙に型を意識させようとしている?
  • do end と {} の使い分けがわからん

触ってみた感触としては、perlよりもかなり使い易い感じ。
ただ、構文が言語の進化によって変わっている??google先生の結果が違うことがあった。
あと、to_i などの存在理由が謎。動的言語では?

あと、GoとJavascript、python3を遊びで触る予定。