ソートされた配列のほうがプログラムの実行が速い?

このプログラムは、コメントのsortを実行するようにすると、速く動くようになる。なぜなのか?

答えは、パイプラインの分岐予測だそうです。分岐予測は以前の実行から分岐を予測してパイプラインを組むため、ソートされていれば分岐予測は成功し、実行が早くなる。

ソートしていないと、分岐予測が多く失敗し、予測して組み上げたパイプラインを破棄しなければならなくなり、実行が遅くなる。

上の部分を以下のように変えて、ifをなくす。

そうすると分岐予測はなくなって、ソートしててもしなくても、同じくらいの速度で実行される。

オリジナル
http://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array

VMware PlayerのVMwareToolboxCmd.exeでハードディスクを圧縮する

version9になってからVMware ToolsのGUIがなくなってしまった。その代わりにVMwareToolboxCmdというコマンドが用意された(Windowsの場合)、(Linuxの場合はvmware-toolbox-cmdというコマンド)。GUIがなくなって面倒になったが、LinuxでGUI環境がないときでも使えるようになった。

ハードディスクを圧縮する

100%になると自動で圧縮がはじまる。

Linuxでavastを使う

Linux版のavast home editionは、手動で起動してウイルスの検査を行うことができる。gtkのGUIでもコマンドラインでも利用できる。利用するにはユーザー登録し、シリアルナンバーをもらう必要がある。しかしWindows版のように、アプリ実行時に監視したりする機能はないようだ。またLinux版とWindows版は同じエンジンを使っている。

インストール

インストールファイルは、rpm,deb,tar.gzが用意されているので、自分の環境にあったファイルをダウンロードしてインストールできる。

ウイルスデータベースのアップデート

コマンドラインでは以下のようする。

ファイルのチェック

以下のようにavastをオプションなしで実行すると、カレントディレクトリ以下のファイルをスキャンする。

しかしこれだとウイルスが発見されても、どのファイルかわからないので、-rオプションをつかって結果をファイルに書き出せば、あとで確認できる。またどの圧縮ファイルをその中身まで調べるかも指定できる。-t Aとすればすべての圧縮ファイルを調べる。また引数でディレクトリを指定すると、そのディレクトリ以下のファイルを調べる。

結果の中で”infected files”がウイルスに感染しているファイルの数なので、これが0ならば問題ないことになる。

追記:
最近のやつにアップデートすると、invalid argumentとかが出て起動できなくなる場合がある。素の場合は起動前に以下のコマンドを実行する。

共有メモリが足りないとエラーになるらしい。本来なら起動時にこれが設定されるようにしてもいいが、ここではスルー。

検査が忙しすぎる場合は、ioniceやniceを使って優先度を落とす。

これはできる限り低い優先度で行う。

ウイルスを検索

avastreportというファイルができるので”infected”で検索する。

MySQLのtwitterフィードの値を置換する

twitterのRSSを取得する方法が段々使えなくなってるみたいで、たとけば http://twitter.com/statuses/user_timeline/95405735.rss のような形式では取得できなくなった。
幸いなことに、http://api.twitter.com/1/statuses/user_timeline.rss?user_id=95405735 の形式だとまだ取得できる。
MySQLのデータベースに前者の形式のURLがたくさんあって、これを後者の形式に置き換えたい。しかしMySQLには正規表現での置換ができないみたいで、だからといっていちいちスクリプトを書くのは面倒くさいのでなんとかできないか。

注:テーブルの変換は間違ったとき戻せなくなる場合があるのでコピーをとっておいたほうが良い

このやり方だと’.rss’を削除したときに2つ(141-139)違うものを変換してしまった。
ちゃんとやるならwhereで条件を絞ればいいんだろうがここではスルー