Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
 
      
  
 
  
  When 2017/04/01 At Elixir Conf Japan 2017 LT Self Introduction ちきさん (Tomohiro Noguchi) Twitter/GitHub/Qiita: @ovrmrw I've started to learn Elixir 1 month ago. What I talk about Reading a JSON file and doing MapReduce. (JSONファイルを読み込んでMapReduceしたい。) Differences between Eager, Lazy and Flow(Concurrent). (Eager, Lazy, Flow(Concurrent)の違いについて。) Flow & GenStage is extremely fast. (Flowめちゃくちゃ速い。) === Git
 
      
  いま話題のCPU脆弱性Meltdownですが、 各OSベンダーからカーネルのパッチが配布され始めました。 個人で利用しているEC2にパッチを適用して、ベンチマークをとったところ、 トータルスコアが25%低下という結果が出ましたのでまとめます。 ※環境やCPUの種類やベンチマークの取り方で変わるので、 必ずしも全ての環境においてこの結果が正しいわけではありません。 環境とスペック EC2インスタンスタイプ:t2.midium OS: 3.10.0-693.11.6.el7.x86_64 (CentOS 7) CPU: Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz (2コア) 結論 コンテキストスイッチの速度が低下する。 Meltdown関連の記事にもあるように、 パッチ適用によってカーネルモードとユーザモードのアドレス空間を分離する措置が取られるため、
 
      
  この記事はRuby Advent Calendar 2017 17日目の記事です。 benchmark_driver.gem とは Rubyの処理系を高速化していく上で重要な計測環境を改善するため、Ruby本体のリポジトリにあるbenchmark/driver.rbの後継として作られたベンチマークツールです。普通にRubyのスクリプトのパフォーマンスを比較するのにも使えます。 また、このgemはRuby Association開発助成金2017に採択されたプロジェクトとして開発されています。 何が便利なのか Procの起動を行なわない精度の良い計測ができる 皆さんがベンチマークによく使うのは、標準ライブラリの benchmark.rb か、見易い比較結果を得られる benchmark-ips.gem 等でしょう。 benchmark-ips.gem でよく使われるインターフェースや ben
 
      
   
  
  
defmodule SupRestartLimit.Worker do use GenServer require Logger @counter_limit 5 def start_link(interval) do GenServer.start_link(__MODULE__, [interval]) end @impl GenServer def init([interval]) do state = %{counter: 0, interval: interval} Process.send_after(self(), :countup, interval) {:ok, state} end @impl GenServer def handle_info(:countup, %{counter: counter, interval: interval}=state) do Log
 
      
  Rustの3種のべき乗演算の速度差について べき乗(冪乗)とは $b^e$ のように $b$ の $e$ 乗で表される値を差す。ここで $b$ を底(base)、$e$ を冪指数(exponent)と呼ぶ。Rust の標準ライブラリでは3種類の冪演算が提供されている。 浮動小数点数どうしのべき乗 底、冪指数共に浮動小数点数型を取り、結果も浮動小数点数型で返す 例:2f64.powf(8f64) 浮動小数点数と整数のべき乗 底は浮動小数点数型、冪指数は整数型を取り、結果は浮動小数点数型で返す 例:2f64.powi(8i32) 整数どうしのべき乗 底、冪指数共に整数型を取り、結果も整数型で返す 例:2i64.pow(8u32) プラットフォーム(OS や CPU アーキテクチャ)によって、それぞれの演算速度に大きな違いがあることに気づいたので、いくつかの環境で試してみた。 試そうとしたきっか
 
      
  概要 gatlingという負荷試験ツールの結果が見栄え良いとのことで試してみた。 どんなものか ScalaなDSLでテストケースを記載するjmeter的なもの。QuickstartとAdvanced Tutorialを実施するとどういうものかわかるかと。 DSLの独特な所としてはUserとScenarioという概念があり、実際に人がブラウザを操作してる感覚+高級言語で表現できるは良いかと。 例えば「hoge.comの/hoge見た後/fugaを見る」というScenarioのUserを10分間に100User分負荷を発生、という感じで、ユーザがブラウザを操作する振る舞いをDSLにいい感じに表現できる。 実際にはwebアプリは複数のページ遷移で1アクションなこともあるので、このように書けると便利そうね、と。 導入 以下、linuxの場合。 jdk落としてきてインストール Gatling Pro
 
      
  はじめに この記事では、プログラムの計算量を求める方法を説明します。プログラミングの初心者向けに、厳密さよりも分かりやすさを優先して説明していきます。 サンプルコードについて この記事のサンプルコードは、C言語(C99)で記述しています。 計算量とは? 計算量とは、 「そのプログラムがどれくらい速いかを大雑把に表す指標」 です。 もう少し正確に言うと、 「入力サイズの増加に対して、実行時間がどれくらいの割合で増加するかを表す指標」 です。 グラフによる計算量の表現 計算量をグラフで表すと、以下のようになります。 これは、**「入力サイズ $n$ が増加するにつれて、実行時間が $n$ に比例して増加する」**ということを表しています。 別のグラフも見てみましょう。 これは、**「入力サイズ $n$ が増加するにつれて、実行時間が $n^2$ に比例して増加する」**ということを表しています
![[初心者向け] プログラムの計算量を求める方法 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/9f8576f58b31240b58633e1eeec96e1feccd53d0/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGNDY0MzQlMkZwcm9maWxlLWltYWdlcyUyRjE1MDI0NjM4NzI_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPTUyOThlZmE5MWU5OTc0ZTFiMjIxM2MwN2Q2N2NkNjBi%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D7f27d8b73eaeb883badbe110162cc81e%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JTVCJUU1JTg4JTlEJUU1JUJGJTgzJUU4JTgwJTg1JUU1JTkwJTkxJUUzJTgxJTkxJTVEJTIwJUUzJTgzJTk3JUUzJTgzJUFEJUUzJTgyJUIwJUUzJTgzJUE5JUUzJTgzJUEwJUUzJTgxJUFFJUU4JUE4JTg4JUU3JUFFJTk3JUU5JTg3JThGJUUzJTgyJTkyJUU2JUIxJTgyJUUzJTgyJTgxJUUzJTgyJThCJUU2JTk2JUI5JUU2JUIzJTk1JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9OGZmNDgzYTEyNTc1NmNlZmE2NGVkNDcwZGQ4ZTMyYzA%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBjb3RycGVwZSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPWIwMDBhZDVlNTZhMGI4YWE3NjE5N2ZhZDg2Njg0Mjc3%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3Db0257ca6a76aae1fba7a65cbab4db552) 
      
  動機 Angular(2 or 4)で開発中のプロダクト(SPA)が重い JS の肥大化 起動が遅い パフォーマンスチューンしたい で、みんないろいろ調べると思うけど… AOT コンパイルとか module の最適化とか手段はいろいろあるのはわかった が、ブログエントリを読んで今開発中のプロダクトに自分で解決策を注入するのが大変 サマリ 対工数効果が高い部分に絞ってパフォーマンスチューンできる、「これさえやればOK!」みたいな進研ゼミ的マニュアルを作った(半ば覚え書きだけど) 平均起動時間1は84%減 4000msec超 -> 640ms2 JS ファイルサイズ3は23%減 2770kb -> 2153kb (Parsed Size) 最適化後の Gziped Size は 393.47kb 前提 この記事は、AngularClass/angular-starter を使ったプロダクトで実
 
      
  もうすぐ Windows10 Fall Creators Update や macOS High Sierra がリリースされるという時期なのにこういうテストを行うのは今更感があるような気がしますが、下記5種類の環境を同一のハードウェアにセットアップして Unixbench を実行してみました。 macOS Sierra Windows10 1703 の Bash on Windows Ubuntu 16.04 LTS macOS Sierra 上の VirtualBox にインストールした Ubuntu 16.04 LTS Windows10 1703 上の VirtualBox にインストールした Ubuntu 16.04 LTS なお、macOS Sierra 向けの Unixbench を動かすには一部のファイルにパッチを当てる必要があるため、macOS の結果は参考程度とご理解く
 
      
  この記事はなんなの プログラミングを始めたばかりで高速化の大枠が全くわからず意味不明なことをしていた在学時、こんな資料があったら良かったのになあ、と思って書いたもの。 書いて、在学時研究室に押し付けた後紛失したと思われていたものが発掘されたもの。 要約 ライブラリがあるならそれを使う。 ライブラリが無ければ、ボトルネック部分を探してそこだけ高速な言語で書きなおすか、可能なら事前コンパイルする。 最初から全てを Low-Level な言語で書くと大変、でも結果のプログラムは速い。 以下の時間の計測ではインポートにかかる時間は除いています。 使用するもの Python(3系) Numba Scipy Line Profiler Fortran(gfortran) QUADPACK QUADPACK以外の導入方法の説明は色んな所にあるので各自でお願いします。上3つに関しては、個人的にはAnaco
 
      
  はじめに JuanitoFatas/fast-rubyにRubyの役割の似たメソッドのパフォーマンスがまとまっていたが、結果だけでなくコードも並べて一覧化したかったので、当該リポジトリをcloneしてきて、以下のscriptを実行してまとめなおした。 File.open('./result.md', 'w') do |dest| $stdout = dest Dir.glob('code/**/*rb').each do |f| dest.puts "## #{File.basename(f, '.rb')}" dest.puts "\`\`\`rb" dest.puts File.open(f).read dest.puts "\`\`\`" dest.puts dest.puts "\`\`\`" require "./#{f}" dest.puts "\`\`\`" dest.put
 
      
  注意: 指標にはなりますが場合によってはパフォーマンスが異なったり挙動が変わったりコードの可読性にも影響するのでちゃんとパフォーマンスを見ながら、テストしながら書きましょう。 参考 https://github.com/JuanitoFatas/fast-ruby https://speakerdeck.com/sferik/writing-fast-ruby メモ Arrayの数を数えるならArray#sizeもしくはArray#length(Enumerable#countを使うより速い) Arrayの検索にはArray#findもしくはArray#detect(Array#select.firstより速い) Arrayのランダム取得にはArray#sample(Array#shuffle.firstより速い) Arrayの最初の要素の取得はArray#[0](Array#firstよ
 
      
  for,while,foreachの速度差を検証してみる [2016/02/20 追記] 全部まとめて書いてしまったので単品で書いたものとILが異なっている可能性有り 個々で検証を行うとまた結果が違うかも・・・ 【検証環境】 ・Unity5.2.4f1(Personal Edition) ・Nexus7(Android 5.0.2) ・100万回ループした際にかかった時間を比較 【比較項目】 ①forの前置インクリメント ②for ③while ④do-while ⑤foreach ⑥forのLengthチェック ⑦forのList<T>参照 ⑧forのList<T>参照のCountチェック ⑨foreachのList<T>参照 ⑩whileのLinkedList<T>参照 ⑪foreachのLinkedList<T>参照 【テストコード】 using UnityEngine; using
 
      
  対象 Python及びNumPy初心者に向けて書いています. 「C言語は使えるけど最近Pythonを始めた」とか「Pythonらしい書き方がよくわからない」に該当する物理系の数値計算を目的とした方には特に有用かもしれません. また, 自分の不勉強のために間違った記述があるかもしれません. ご容赦ください. あらまし 内容はNumPyを用いた数値計算の高速化 : 基礎のつづきです. ndarrayのユニバーサル関数や演算を用いて可能な限りforループを使わずに基礎的な数値計算を実装していきます. 今回からSciPyも仲間に加わります. 以下ではNumPy・SciPyの関数の詳しい実装についてはあまりコメントしていないので, わからないことがあったら是非リファレンスを読んでみてください. 言わずもがな, 車輪の再発明をしないことがとっても大事です. 微分 物理の基礎方程式には微分がつきものです
 
      
  対象 Python及びNumPy初心者に向けて書いています. 「C言語は使えるけど最近Pythonを始めた」とか「Pythonらしい書き方がよくわからない」に該当する物理系の数値計算を目的とした方には特に有用かもしれません. また, 自分の不勉強のために間違った記述があるかもしれません. ご容赦ください. あらまし NumPyを用いた数値計算の高速化 : 基礎 NumPy・SciPyを用いた数値計算の高速化 : 応用その1 の続きになります. 基礎的な数値計算の手法を追っていきますが, 今回は少し発展的な内容も含みます. 代数方程式 / 超越方程式 代数方程式はいわゆる手で解けるふつうの方程式です. 超越方程式は随分大仰な名前ですが, 代数的な手法で解けない方程式のことを指します. 具体的には $$ \sin(x) = \frac{x}{2} $$ こんな子です. この方程式は, 「$\s
 
      
  あらまし 以前の記事でNumPy・SciPyの高速化にまつわる事柄を書きました: NumPyを用いた数値計算の高速化 : 基礎 NumPy・SciPyを用いた数値計算の高速化 : 応用その1 NumPy・SciPyを用いた数値計算の高速化 : 応用その2 ホントに早くなってるの?ちゃんと調べてみましょう. 調査方法 Pythonによるオレオレ実装と比較します. 速度よりシンプルさを重視した実装との比較なので正当な評価とは言い難いかもしれません. Pythonはanaconda3, 時間計測にはIPythonの%timeitを使用します. --実行環境-- OS : Ubuntu16.04 LTS 64bit Python : anaconda3-4.1.1 CPU : Intel Corei5 3550 (4-core / 4-thread) リストの初期化 たとえば行列の初期化です.
 
      
  リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
