PHPとPythonとRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。PHP 7.0.0 HashTable高速化 (2015/11)Python 3.6.0 dictobject高速化 (2016/12)Ruby 2.4.0 st_table高速化 (2016/12) これらのデータ構造はユーザーの利用する連想配列だけでなく言語のコアでも利用されているので、言語全体の性能改善に貢献しています1。 スクリプト言語3つが同時期に同じデータ構造の改善に取り組んだだけでも面白い現象ですが、さらに面白いことに各実装の方針は非常に似ています。独立に改善に取り組んだのに同じ結論に至ったとすれば興味深い偶然と言えるでしょう2。本稿では3言語の連想配列の従来実

English version 要約dockerはデフォルトでセキュリティ機構(Spectre脆弱性の対策)を有効にします。この影響で、RubyやPythonのようなインタプリタは速度が劣化します。特にCPU律速なプログラムで顕著に遅くなります(実行時間が倍くらいになることがあります)。 現象Rubyで1億回ループするコードを、直接ホスト上で実行する場合と、docker上で実行する場合で実行時間を比較してみます。 直接ホスト上で実行した場合: $ruby -ve 't = Time.now; i=0;while i<100_000_000;i+=1;end; puts "#{ Time.now - t } sec"'ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux] 1.321703922 secdocker
Floating Point Math Your language isn’t broken,it’s doing floating point math. Computers can only natively store integers, so they need some way of representing decimal numbers. This representation is not perfectly accurate. This is why, more often than not, 0.1 + 0.2 != 0.3. Why does this happen?It’s actually rather interesting. When you have a base-10 system (like ours),it can only express fr
English version is available atgithub PyCall はRuby の中から既存のPython ライブラリを使うにはとても便利なライブラリです。 とはいえ、これはRuby からPython の関数を呼ぶためのライブラリなので、Python の関数を1回呼ぶ度にRuby に制御が戻ってきます。 これが元でちょっと間違えやすいこともあるようです。 例えば下のような記事を見つけました。Ruby×PyCallでTensorflowのMNISTチュートリアル「連想配列の違いで手間取った」 そこでRuby の柔軟な構文を活かして、Python っぽいコードをRuby プログラムの中に埋め込んでおくと、そこだけまとめて切り出してPython に送って実行する DSL を作ってみました。 Yadriggy を使って作っています。 この DSL の実装は
前置き 先日(2015/05/30)、Python東海 第27回勉強会で、「Jupyter + RISE による ライブデモ&プレゼンテーション」という発表をしてきました。 発表は、資料を Jupyter(IPythonNotebook)で大枠を作り、RISE でリアルタイムスライド表示しながらその場で編集し、その場でGist にアップ → nbviewer に登録 → nbviewer でのスライド表示、という流れで実施1。上記の発表資料は最終的に nbviewer で公開したスライド(後で少しだけ再編集したもの)です。 で、スライド関係は良かったのですが、主にそれ以外の環境設定周りについて、短い発表時間の中でだいぶ端折ったり、発表資料も最低限のことしか書いていないので、自分がやったことを補足しておこうと思います。 なおこの記事は、先日の記事「IPython + IJulia → J

(2019.06.25 追記) rbczmq は現時点では非推奨です。どのプラットフォームでも ffi-rzmq を使いましょう。 IRuby を使おうとすると rbczmq の中で SEGV が発生してしまう場合は、zeromq と czmq の組み合わせが悪い可能性がある。rbczmq が正しく動くインストールのパターンを以下に紹介するので、一番好ましいものを試してみると良い。 rbczmq は gem パッケージの中に zeromq と czmq を同梱しているが、後述する事情により同梱ライブラリを使わない方法を先に紹介する。 (1) homebrew や apt-get でインストールしたシステムの zeromq, czmq を使う この方法は、ディストリビューションで用意されている zeromq や czmq を確実に使うので、最もオススメしたい方法である。やり方は、まずシステム

#Pythonだと、 import matplotlib pyimport :matplotlib pyimport 'matplotlib' # 上ではシンボルを使ったが、文字列でも同じ #Python だと import matplotlib.pyplot as plt pyimport 'matplotlib.pyplot', as: :plt plt = PyCall.import_module('matplotlib.pyplot') # 上はこのような記法でも同じ #Python だと from janome.tokenizer import Tokenizer pyfrom 'janome.tokenizer', import: :Tokenizer #Python だと from keras.layers import Dense, Dropout pyfrom '

The venerable “mixin” is atechnique I learned as aPython developer. Now, after writingRuby code for the past year, I’m excited to compare how these two languages approach mixins, includingsimilarities, differences, and traps. There will be code! Table of Contents What is a Mixin? Mixins inPython Adding Instance Methods Adding Class Methods Trap: The Order of Superclasses Matters! Adding Insta

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Comparison ofprogramming languages" list comprehension – news · newspapers · books · scholar · JSTOR (February 2009) (Learn how and when to remove this message)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く