Mathは本当に遅いのか 色の距離(色差)を計算するときにちょっとだけ試してみたので,実際によくある(小手先)高速化手法でMathが速くなるのか検証してみた. 検証方法 JavaとAndroidで検証. 単純に実行時間をSystem.nanoTimeで取得し,比較している. 検証順や検証タイミングで最適化がかかったりするので,何回か実行して落ち着いた値で比較している. Javaの検証はIntel Xeon E5 3.5GHzのMac Pro,Androidの検証はQualcomm Snapdragon 800 MSM8974 2.2GHzのSO-02Fで試している. 従来のMathクラスと,実装したDMathクラスで比較した. 10万回実行して1回あたりの実行時間をnano秒で表示している.詳しい方法は一番下を参照. べき乗の高速化 べき乗を計算するMath.pow()は小数のべき乗もサポ
完全に自分用のメモです。 よく忘れるけどググると時間がかかるものをここにメモします。 dieしたり、Ctrl+Cした時にスクリプトを終了させずにコンソール起動して変数確認したり、perlコードを試したりするプチテクニック デバッグしていて動作がおかしいからprintfデバッグしているとアレもコレもと出力してどんどんコードが汚くなった上に時間がどんどん過ぎて言ったり、 はたまた始めてのモジュールで動作があまり良くわからず、ドキュメント片手にトライアンドエラーしながらコードを書いては、激非効率なコーディングを強いられている時にちょっとだけ便利になるかもしれないテク テクって言っても大した事ないが、終了させずにシグナルフックしてコンソールからの入力をeval実行するようにしておくと、シグナル発生のタイミングの変数確認したり、perl実行したりすると便利かも while(1){ $SIG{'INT
仕事でスマホ用サイトをイジっておりまして、非同期処理でのページングを 修正するに際して、History APIを触ってました。 スマホのブラウザ周りの差分で色々とハマったので、メモしておきます。 History APIとは とりあえず復習しましょう。 概要 HTML5で追加された、履歴操作のAPI。 履歴スタックに履歴を追加(push)、現在の履歴の書換(replace)、 ブラウザバック等のアクションによる履歴移動を監視する(pop)、といったことが可能になる。 history自体は以前からあって履歴の操作は画面遷移を伴っていたが、これらのAPIの追加によって、 画面遷移を行わなくともJavaScriptからの履歴操作が可能となった。 pushState 履歴をスタックに追加する。
LINEのbotのAPIが、1万人先着でTrial版が始まりましたね。 僕はサーバ系はperl好きなのでperlでbot作りました。 まだTrialなので、まずはhello worldします。 作り込みは別途。 LINE bot登録まで ggrksってください。 キーワード "line bot" LINE Developers(英語アレルギーですが英語です) https://developers.line.me/ まあ順に追って行けばなんとか成ると思います。 各種調達まで PC - 持ってた(ちなみに、2年前のMacBookAirです。) サーバ(さくらのVPS) - 持ってた(月1000円ぐらいの安い奴) SSL証明書 - 無かった。1年1000円ぐらいのrapidssl買った。 エディタ - (vim最強) 主な手順 処理の流れとしては、 「LINEbotにスタンプ/メッセージを打つ」
上記のように、2の冪乗かの判定ができます。 2の冪乗という数は、2進数で、$MSb$(Most Significant bit : 最上位ビット)の1つのみが立っている状態です。 そして、2の冪乗-1という数は、2の冪乗で立っているビットより小さい位のビットが全て立っている状態です。 つまり、それらの$AND$(論理積)を取ると$0$になります。 例) $8_{(10)}=1000_{(2)}$の判定 $1000 \space and \space 0111 = 0000$ 論理積が$0$になったので、2の冪乗となる。 ビットシフトを用いて2の累乗を求める 元記事の方では、$n$が与えられる数とすると、2を $log_2(n)$の小数を切り捨てた値 乗することによって目的の値を求めていました。 今回は、2の冪乗を求めるということなので、bit演算(ビットシフト)を用いて求めてみます。 まず
この記事はPerl 5 Advent Calendar 2016の9日目です。 昨日はnqounetさんによる、「遅延実行と仮実行(dry_run)について考えてみた」でした。 今日は僕が開発しているCPANモジュールインストーラcpmを紹介したいと思います。 cpmとは CPANモジュールインストーラといえば、cpanmが世界的に有名でたくさんの方が使っていると思います。 僕自身もcpanmを本当によく使っていますが、大量の依存があるアプリケーションを開発しているときなどcpanmだとCPANモジュールインストールにかなりの時間がかかり、もう少し早くならないかと思っていました。 そこでcpmを作りました。cpmは内部でcpanmを並列に使ってCPANモジュールインストールを高速に行います。 さて、速さを求めて作ったcpmですが、最近いくつか他の機能も追加したので 今日はその紹介したいと思
こんにちは。仙台iOS開発者勉強会(SWWDC) Advent Calendar 2014の8日目の記事です。 役に立ちそうで役に立たない Swift の文字列がメモリにどのように格納されるか調べてみました。 Swiftの文字列ってどうなってるの? Swift は Objective-C のラッパーみたいなイメージだったので、多分 Objective-C と大体同じだろうと思ってました。とかいいながら、Objective-C 自体私はよくわからなかったりする。 Swiftの文字列は Java と同じように格納される 結論からいうと Java と同じように、文字列はヒープに格納され、同じ文字列を定義すれば同じアドレスを参照することになる。 「Java と同じように」という曖昧な表現なのは、Java だと「String定数プール」なるものがあり、そのような仕組みが Swift や Object
RedisはNoSQLのデータストアとして有名ですが、もう1つの機能として、「pub/sub機能」を持っています。もはやSQLと比較するような機能ですらないのですが、軽くまとめてみます。 pub/subとは JavaScriptをやっているとイメージしやすいと思うのですが、onclickに直接イベントを書いてしまうとイベントが1つしか設定できなくなってしまいます。 一方で、addEventListenerを使えば複数イベントをセットできますし、イベントをトリガする側ではイベントがいくつついているかも気にせずに、まとめて発生させることができます。このようにして、「イベントを起こす側」と「イベント処理を行う側」を分離するのがpub/subモデルです。 Redisでのpub/sub まず、受信側がSUBSCRIBE チャンネル名というコマンドをRedisに投げます。ふつうのRedisコマンドは、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く