かかる時間の計測を行います。ディレクトリ内のテスト)を書くかのようにベンチマークを行うことができます。Benchmarkの設定ベンチマーク用のモジュールを追加ベンチマーク用のコードを追加するためのモジュールを作成します。指定する必要があるため、モジュールを分けておくと継続的に実行する際に便利です。プラグインとライブラリを追加します。作成後、以下のコードを追加します。tools:replace="android:debuggable"/>以上で設定は終わりとなります。ここからは実際にベンチマークを取るためのコードを書いていきます。ディレクトリに以下のクラスを作成します。}}注目部分は以下の2点です。内に実行する処理が、ベンチマークの対象となります。ベンチマークテストは通常のテストと同様に実行するだけで、ベンチマークをとることができます。msのスリープ処理を実行するようにしました。実行してみると以下のような出力が行われます。かかったという出力が得られました。Benchmarkでは、テストコードと同じ記述方法でベンチマークをとることができます。いうinspectionが表示されます。https://github.com/sckm/MeasureViewSizeBenchmark/blob/master/view-measure/src/main/res/layout/layout_no_nested.xmlレイアウトプレビューは以下の画像のようになります。ベンチマーク用コード以下のコードを実行して計測を行いました。内に書いた処理は計測から除外することが可能です。)}計測結果ベンチマークテストを実行した結果は以下のようになりました。入れ子で使用した場合は、しなかった場合と比べて処理に大きく時間がかかっていることが分かります。Benchmarkライブラリを使用することで、簡単に安定したベンチマークをとることができます。例にしましたが、公式のサンプルにあるオートボクシングのようにAndroidに依存していないコードのベンチマーク計測も可能です。GitHub例で使用したコードなどは以下のレポジトリで確認することができます。Benchmarkを使ってView#measureにかかる時間を計測するTweet広告を非表示にするもっと読むコメントを書く2018-12-14Scratchファイルを使って気軽に実行可能なコードを保存するKotlin概要この記事ではIntellijでサポートされたKotlinのScratchファイルについて紹介を行いますScratchファイル自体はKotlinに限らずJavaなどもサポートされていますScratchファイルとはKotlinなどの実行可能なコードを保存するファイルで、デフォルトではプロジェクト外に保存されます。プロジェクト内にあるファイルと違う点は、あらかじめプロジェクトをビルドしておけば、Scratchファイルのビルドだけで実行可能なため、実行までの時間が速いことです。Kotlinのリファレンスにあるような機能を自分のサイトでも使うことが可能になりました。Language使い方scriptの記述codeタグ内にコードを記述する場合は以下のコードをヘッダーなどに記述します。data-selector="code"></script>上の記述ではcodeタグすべてにKotlinPlaygroundが適用されてしまいます。はてなブログのMarkdownで使う場合には以下のようにKotlinコードのみで適用されるようにするのが良いでしょう。以後の説明ではこちらを使っていると仮定して進めていきます。});</script>以上で準備は終了になります。Playgroundを使ったコードを表示しています。03:53ブログに実行可能なKotlinコードを貼り付けるTweet広告を非表示にするもっと読むコメントを書く2018-04-27SequenceとList(Array)KotlinTL;DRSequenceは1つの値に対する操作が全て行われた後、必要なら次の値が処理される。Sequenceがあります。ListやArrayは他の多くに言語にもあるため想像がつくかと思います。Arrayとの違いをみていきましょう。ArrayListとArrayはそれぞれの要素に対して操作を行うという観点ではほとんど同じと言えます。大きな違いとしてはArrayはJavaの配列型と同等の扱いになります。Javaとの互換性を保つためにArrayがあると推測できます。以降の文ではArrayは無視してSequenceとListについて書いていきます。操作の過程を以下の表に示します。Sequenceの4の列がすべて空白になっています(書き忘れじゃないですよ)。今回の場合、Sequenceでは値4に対してまったく操作が行われません。ここがListとの大きな違いとなります。take)がすべて終わった後に値2,3の操作が行われます。値1〜3のtake(2)が終わった段階でtake(2)の結果が決定するため値4の処理は行われません。Listの場合は値1〜4に対してmap(v*v)の操作を行った結果のListを作成します。take()と続きます。まとめSequenceは1つの値に対する操作が全て行われた後、必要なら次の値が処理される。Sequenceは実際に値が必要になるまで処理が行われない(遅延される)などの違いもあります。00:03SequenceとList(Array)Tweet広告を非表示にするもっと読むコメントを書く2018-04-05文字列中の変数の値を表示するプラグインを作ったKotlinプラグインの概要Kotlinの文字列中の変数が定数値の場合に、その値を文字列中に表示するプラグインです。クリックし、ConstStringPlaceHolderで検索することでインストールができます。定数値を表示するには、文字列中の変数にカーソルを移動した後にCollapse(右クリック→Folding→Collapse)をします。課題v0.0.1時点では、Javaコードでは使用できないファイルを開いた時点ではすべてExpandされた状態になるの課題があるので今後は上記を改善していきたいです。classは以下のようにクラスにdataをつけて宣言することで、コンストラクタで宣言されたプロパティを使ったequals/hashCode/toString関数などを自動生成してくれます。truetoString()で返って来る文字列にプロパティの値が入っていたり、==(equalsが呼ばれる)を使った比較ができたりします。↓のようにプロパティに配列型を宣言した場合にも、同様にequals()などの関数が自動で生成されます。book2の結果がfalseになってしまいます。classのequals内の配列の比較はarray1.equals(array2)と同等のコードになります。Javaの配列型のequals()メソッドは、要素の比較は行わず配列型のインスタンスが同じかどうかを判定するため、配列内の値が等しいだけではtrueになりません。対処法equals()メソッドをオーバーライドしてArrays#equlas()を使うことでこの問題を解決することが可能です。IntellijやAndroidStudioでKotlinPluginを入れている場合(最近のバージョンでは初めから入っています)は、Inspectionが表示され以下のようなequals()/hashCode()を自動生成することが可能になっています。classで配列の比較も良い感じに生成してくれるとありがたいですが、影響がでかいためv2が来るまで変更されることはないと個人的には思います。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。