タグ

perfに関するkiyo_hikoのブックマーク (74)

  • 宁波逼拘旅行社

    宁波逼拘旅行社
  • そろそろ PowerShell の一次配列の罠と回避について一言いっておくか - tech.guitarrapc.cóm

    タイトルは一度いってみたかっただけです、生意気言ってごめんなさい。 他の言語同様、PowerShell にも一次配列があります。こんなやつ。 gist.github.com PowerShell は、型を持っているので Object[] 以外にも T[] (型の配列) などもあるのですが、他言語から見ると配列の扱いに癖があるように思います。まとまった記事にしたことなかったので、癖(挙動を知らなければ罠に思える)についてまとめます。 目次 目次 TL;DR 何がこまるの 罠となるポイント 暗黙の型変換 暗黙の型変換のルール シンプルな型変換例 暗黙の型変換の失敗例 一次配列の型変換 回避策 簡略化された配列宣言 よくある簡略な方法 明示的な宣言 単数を一次配列にする 要素の連結がオペレータによっては遅い 回避策 標準出力での配列型の要素が単体な場合の自動的な型変換 回避策 オペレータの配列と

    そろそろ PowerShell の一次配列の罠と回避について一言いっておくか - tech.guitarrapc.cóm
    kiyo_hiko
    kiyo_hiko 2019/05/27
    +=オペレーターはだんだんのろまになるのでList使おうという話 / New-Object System.Collections.ArrayList
  • エクセルVBA 配列の速度比較 | ハウツーIT

    ExcelVBAでプログラムを組む際に、大量のデータを処理するのに使うのが配列系の処理である。ただ、プログラムの組み方によっては処理時間に大きく差が出てくるようだ。データ量が少なければよいが、多くなってくると、処理時間が延びてしまい、使い勝手も悪くなる。そこでベストな配列の使い方を考慮してみる。 VBAでは主に配列として使えるのが、静的配列、動的配列、コレクションである。3択になるわけだがどれを選ぶのがよいだろうか? 試しに単純に変数を宣言して、適当なデータ(10,000,000個)を配列に書き込む時間を測定してみた。できるだけ高速で処理時間を短縮できるものを選択したい。 静的配列Dim Dimtest(10000000) As String Do DoEvents Dimtest(i) = "テスト" & i If i = 10000000 Then Exit Do End If i

    エクセルVBA 配列の速度比較 | ハウツーIT
    kiyo_hiko
    kiyo_hiko 2019/05/09
    意外にもコレクションが優秀であるという結果読んでビックリ
  • Perlでファイルを丸呑みする3つの方法 - Qiita

    ファイル全体を読み込んで、1つの変数に文字列として代入したい、というケースはよくあると思います。 記事ではPerlでそれを実現する3つの方法とメリットとデメリットを紹介します。 最初に3つの方法とそれぞれのメリット、デメリットをまとめておきます。 メリット デメリット

    Perlでファイルを丸呑みする3つの方法 - Qiita
    kiyo_hiko
    kiyo_hiko 2018/08/20
    local $/; → Scalarに改行文字ごとドカ読み
  • 『Listのfor文と拡張for文およびIteratorの実行アクセス速度』

    Javaの下巻で勉強したコレクションクラスでのArrayListとLinkedListについてのお話。 Javaを結構勉強している人は間違いがないかご確認下さい(笑 今回の日記では、ArrayListとLinkedListの使い分けに絡めて、for文と拡張for文およびIteratorではどちらの方がアクセス速度が早いのか、といったところです。 さて、私はこの2つのクラスを今までは、何となくスタックの機能使いたいからLinkedListで、それ以外はArrayListでいいかなと言った感じで使ってました。 はい、ダメダメですね。 何がダメかと言うと、次の特徴を見れば分かると思います。 2つのリストにおける最大の特徴 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, ja

    『Listのfor文と拡張for文およびIteratorの実行アクセス速度』
    kiyo_hiko
    kiyo_hiko 2016/05/23
    暗黙のボクシングを挟むので差が出るらしいという話
  • PHP製のWebアプリが遅い場合の基本チェック6点 - ほんじゃらねっと

    先日別のチームから、 「PHPで作成したWebアプリの速度が遅いので助けてくれー」 という相談を受けた。 対応したものの、結構時間がかかって面倒だったので、 今後こういった問題が起こった時に使えるよう、チェックリストをまとめてやった。 基的な内容だけど、 このチェックリストの内容をやってみて、それでもダメなら相談しなさい、 と伝えておくことで相談を減らすフィルタとして働いてくれるはずだ。 PHPプロジェクトに限らず、バックエンドでデータベースを使用している Webアプリのプロジェクトなら試す価値のあるものが多いはず。 調査や対応方法の手軽さ順で並べるとこんな感じ: Webブラウザのデベロッパーツールでレスポンスを計測する Webサーバ(Apache)のリクエスト時間をログに出力する ログ解析ツールでURL毎の付随リクエスト数を確認する データベースのスロークエリログを出力する プロファイ

    PHP製のWebアプリが遅い場合の基本チェック6点 - ほんじゃらねっと
  • OR条件よりもUNIONの方が速い! - 地平線に行く

    一週間悩んで、やっと分かったのでメモ。 こういうSQLの場合、前者よりも後者の方が速いです。 SELECT * FROM FooTable LEFT OUTER JOIN BarTable1 ON FooTable.ID = BarTable1.ID LEFT OUTER JOIN BarTable2 ON BarTable1.F_ID = BarTable2.ID LEFT OUTER JOIN BarTable3 ON BarTable2.F_ID = BarTable3.ID LEFT OUTER JOIN BarTable4 ON BarTable3.F_ID = BarTable4.ID LEFT OUTER JOIN BarTable5 ON BarTable4.F_ID = BarTable5.ID WHERE FooTable.Name = ? OR BarTable5.N

    OR条件よりもUNIONの方が速い! - 地平線に行く
    kiyo_hiko
    kiyo_hiko 2015/12/07
    参考になった
  • 論理削除とeager_loadでN+1問題が発生する件 · zephiransasのチラシの裏

    Railsアプリにて論理削除とeager_loadを合わせて使うとN+1問題が発生することに気づいたのでメモ。 N+1問題を確認する まずはN+1問題が起きるようなモデルを作成します。よくあるブログアプリのような、ブログのエントリがあり、それにコメントが複数あるパターンです。 class Post < ActiveRecord::Base attr_accessible :title, :content has_many :comments end class Comment < ActiveRecord::Base attr_accessible :post_id, :name, :content belongs_to :post end 適当なデータを入れた後、これに対してrails cで以下のようにレコードを取得します。 Post.all.each do |post| puts po

  • MySQL Spiderエンジンを使ってみた。〜データベースシャーディング(sharding)とは〜 - 気ままに書いてみました日記

    もしかしたら使うかもしれないので調べてみた。 shard 日語に訳すと(ガラスや貝殻の) 「破片」といったような意味 データベースをshardに分解して複数のサーバに分散して運用するのがDB sharding データベースパーティショニングとも言えるのかしら? 単一のサーバのDBテーブルを複数のファイルに分割するのをパーティショニングとも呼ぶが、「パーティショニング」という言葉を使ってDB shardingのことを言っているブログ等もちらほら見かけます。 より突っ込んでみたい人は「shared nothing」でぐぐってネ。 なぜデータベースを分散処理するのか 横軸にはサービス運用開始からの時間経過を設定し、縦軸には「DBの応答時間」、「DBへの問い合わせ数」、「DBサイズ」の各数量をとります。サービスが順調に利用されていっているものとし、「DBサイズ」や「DBへの問い合わせ数」は時間経

    MySQL Spiderエンジンを使ってみた。〜データベースシャーディング(sharding)とは〜 - 気ままに書いてみました日記
  • N+1問題 / Eager Loading とは - Rails Webook

    N+1問題とは SQLクエリが 「データ量N + 1回 」走ってしまい、取得するデータが多くなるにつれて(Nの回数が増えるにつれて)パフォーマンスを低下させてしまう問題です。 次のように、何度もクエリが走ってしまい、その度に0.1msほどかかってしまってます。 Processing by PostsController#index as HTML Post Load (0.2ms) SELECT "posts".* FROM "posts" User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]] User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id",

    N+1問題 / Eager Loading とは - Rails Webook
    kiyo_hiko
    kiyo_hiko 2015/08/24
    bulletというgem
  • SQLデータベースに正しインデックスを作るのは 誰の役割?

    SQLのパフォーマンス問題は、SQLそのものと同じぐらいの歴史がある―― ある人は、SQLはそもそも遅いものだとすら言うかもしれません。これは、SQL歴史が始まった頃は正しかったかもしれませんが、今となっては全く 当てはまらないでしょう。にもかかわらず、SQLのパフォーマンス問題は今も一般的でよくあることです。どうしてそうなってしまうのでしょうか? SQL言語は、恐らく最も成功した第4世代言語(4GL)でしょう。その最大の利点は、「何を」と「どのように」 を分離できることです。SQL文は、どのようにそれを実行するかを記述せずに、単純に 何を必要としているかのみの記述になっています。以下のような例を考えてみましょう。 SELECT date_of_birth FROM employees WHERE last_name = 'WINAND'SQLのクエリは、データを要求する英語の文として読

    SQLデータベースに正しインデックスを作るのは 誰の役割?
    kiyo_hiko
    kiyo_hiko 2014/10/18
    はい
  • Hadoop のコモディティはローエンドという意味ではない - 科学と非科学の迷宮

    Hadoop に関するよくある勘違いの一つとして、「古いマシンを有効活用できる」というものがあります。 その根拠となるのが、公式サイトを含めあちこちで書かれる「コモディティサーバの上で動く」という一文です。 The Hadoop Distributed File System (HDFS) is a distributed file system designed to run on commodity hardware. 404 Not Found しかし Hadoop9章などにも書かれている通り、コモディティサーバとはローエンドサーバという意味ではありません。 あくまで「複数のベンダから入手可能なサーバ」という意味であって、決して安いサーバを意味しているわけではないのです。 メモリだけあれば古いマシンが蘇る memcached とかとは訳が違います。 例えば2010年3月時点でのCl

    Hadoop のコモディティはローエンドという意味ではない - 科学と非科学の迷宮
  • Java7 で String クラスがリファクタリングされていました - 地平線に行く

    先日、ついに JavaSE 7 がリリースされました! そこで、早速ダウンロードして、Java7 のソースコード(src.zip)を Java6と比較してみたところ、公表はされていないのですが、ちょこちょことリファクタリングされていることがわかりました。 そこで、そのうち String クラスについて調べてみました。 splitメソッド - 独自処理による高速化 いままでは、String#split(〜) は正規表現 (Patternクラス) に処理を移譲するだけでした。 // (Java6) Stringクラス、2291行目〜 public String[] split(String regex, int limit) { return Pattern.compile(regex).split(this, limit); } それが、単純な区切り文字なら正規表現を使わないで独自に処理をす

    Java7 で String クラスがリファクタリングされていました - 地平線に行く
  • ソーシャルゲーム運営地獄 - やねうらおブログ(移転しました)

    実際に関係者から聞いた話なのだが、いま、底辺のソーシャルゲーム会社は大変なことになっているらしい。底辺じゃない会社もそれなりに大変なものかも知れないが、底辺の会社はそれどころの騒ぎではないようだ。 まず、プログラマーの力量に合っていない。 「ソーシャルゲーム(の開発を)舐めんな」みたいな話は大手の開発会社のプログラマーからよく聞くが、人数がある日突然何万ユーザーも増える。このへんの流入する人数の調整が利かない。 もともと何十万人規模の接続をさばくには、MMORPGなどのオンラインゲームよりもシビアであり(普通、MMORPGでもワールドがわかれていて、1つのサーバーの常時接続人数は数千人規模に収まるので)、大人数になったときにうまくスケールアウトするように設計するためには、ゲームシステム自体がそのへんを考慮してうまく練られていないといけない。 ところが、底辺ゲーム会社だと、社長がそのへんの理

    ソーシャルゲーム運営地獄 - やねうらおブログ(移転しました)
  • 圧倒的に生産性の高い人の特徴、仕事の進め方、問題解決の方法 - 久保清隆のブログ

    「一人の科学者の一生の研究時間なんてごく限られている。 研究テーマなんてごまんとある。 ちょっと面白いなという程度でテーマを選んでいたら、 当に大切なことをやるひまがないうちに一生が終わってしまうんですよ。」 利根川 進 「フェルミは数学にも長けていた。必要とあれば複雑な数学を駆使することもできたが、 まずはその必要があるかどうか確かめようとした。 最小限の努力と数学的道具で結果へたどり着く達人だった。」 ハンス・ベーテ 「同じテーマでも、仮説の立て方が周到かつ大胆で、実験のアプローチが巧妙である場合と、 仮説の立て方がずさんでアプローチも月並みな場合とでは、雲泥の違いが生ずる。 天才的といわれる人々の仕事の進め方は、仮説の立て方とアプローチの仕方の二点が 優れて個性的で、鋭いひらめき、直観に大いに依存している。」 箱守仙一郎 「成果をあげる者は仕事からスタートしない。計画からもスタート

    圧倒的に生産性の高い人の特徴、仕事の進め方、問題解決の方法 - 久保清隆のブログ
  • HTTPリクエストを減らすために【序章】HTTPリクエストは甘え - MOL

    このシリーズはHTTPリクエストの理解を通じてWebパフォーマンスの重要性について考える5章構成になっている。 【序章】HTTPリクエストは甘え 【CSS Sprite編】スプライト地獄からの解放 【WebFont編】ドラッグ&ドロップしてコマンド叩いてウェーイ 【DataURI編】遅延ロードでレンダリングブロックを回避 【終章】我々には1000msの猶予しか残されていない 1日目は、HTTPリクエストの概要について説明する。 例えに、私のポートフォリオページ(t32k.me)が表示されるまでの流れを見ていく。まず、検索からでも方法はなんでもよいが、ブラウザのURLバーにt32k.meと打ち込んでアクセスする。そのページを見にいくということは、つまりt32k.meに対してHTTPスキームでリクエストするということを意味している。 クライアントであるブラウザは入力されたURLを判断して、リソ

  • Amazon.co.jp: Javaプラットフォームパフォーマンス―コードレベルのチューニングと開発プロセスへの統合 (The Java Series): ウィルソン,スティーブ (著), ケセルマン,ジェフ (著), Wilson,Steve (原名), Kesselman,Jeff (原名), 剛,豊福 (翻訳): 本

    Amazon.co.jp: Javaプラットフォームパフォーマンス―コードレベルのチューニングと開発プロセスへの統合 (The Java Series): ウィルソン,スティーブ (著), ケセルマン,ジェフ (著), Wilson,Steve (原名), Kesselman,Jeff (原名), 剛,豊福 (翻訳): 本
    kiyo_hiko
    kiyo_hiko 2013/08/19
    「効率の中で一番重要なのはユーザが知覚する効率だと述べる(特にGUIプログラム)」「Swingに対するユーザ・インタフェースの書き方等が詳細に説明される」
  • ページが見つかりません | 日本HP

    ページが見つかりません。 目的のページは、移動または削除によって無効になっている可能性があります。申し訳ありませんが、検索またはリンク先よりお探しください。

    kiyo_hiko
    kiyo_hiko 2013/08/14
    Lisp、SmalltalkやJavaの古い日のGCはメモリーが一枚岩でマーク&スイープで大規模なガーベジコレクションを行うので停止時間がながい HotSpot VMでは世代別GCを行う マイナーGCは数msですむらしい
  • 第8回 イレギュラーなヒープの動作を理解する | gihyo.jp

    Tenured領域を早く使ってしまうパターン 前回ご紹介したように、HotSpotのヒープでは、アプリケーションがオブジェクトを作成するとまずはじめにEden領域が割り当てられ、マイナーGCによってSuvivor領域、Tenured領域へと移動していく流れが一般的でした。 しかし、このパターンではないイレギュラーなパターンがいくつか存在します。 その1つが、「⁠オブジェクトが一般的なパターンに比べ、早くTenured領域に移動してしまう」というものです。 図1 Tenured領域を早く使ってしまう例 Tenured領域はメジャーGCの対象であり、メジャーGCはNew領域を対象とするマイナーGCに比べ、はるかに停止時間が長くなります。そのため、このようなパターンが頻繁に起こる場合は、メジャーGCの多発によってアプリケーションの停止時間が増加します。 図2 Tenured領域を早く使ってしまう

    第8回 イレギュラーなヒープの動作を理解する | gihyo.jp
    kiyo_hiko
    kiyo_hiko 2013/08/14
    Edenに入らないオブジェクトができた場合、それはいきなりTenuredに入る (SURVIVORは常にEdenより小さい、Edenに入らないからってOOMEで落とすよりは待ってでも実行続ける発想らしい) 短中期のオブジェクトが多い場合newを増やす
  • VBAでCollectionのループ方法をFor Eachに書き換えるだけで100倍高速になった

    今、ExcelVBAでちょっとしたものを作ってるのですが、コーディング中に急にパフォーマンスが悪くなるという現象が発生したので、原因を調べてみたらCollectionの各要素を処理する場面が問題のようだった。CollectionをFor Eachで周すようにしただけで、さっきの遅さが嘘のように解決してしまった。 当にFor i = … のループを For Eachに書き換えただけで速くなるのか確信持てなかったし、他の原因も重なった結果かも、という疑惑も拭いきれない状態だったので、ExcelXPでベンチマークを取ってみました。 主要部分 下のLoop_for_indexとLoop_for_eachを比較しました。 'For i = ...版。 各要素を添字指定でアクセスする Public Sub Loop_for_index() Dim dummy As Long Dim i As Lo