2016-05-02 1 views
8

私は、アプリケーションのバックエンドにAWS Lambdaを使用する予定です。私はnode.jsに比べてJavaがより快適ですが、node.jsのLambda関数はJavaよりも一般的です。 Javaベースとnodejベースのラムダ関数の間にパフォーマンスの違いはありますか?node.js/Javaで記述されたAWSラムダ関数のパフォーマンス/機能の違いはありますか?

+2

これは意見の問題ではありませんが、測定可能な事実です:https://forums.aws.amazon.com/thread.jspa?messageID=691551 – Atifm

答えて

19

Javaの起動に時間がかかりますが、実行時のパフォーマンスはnode.jsやPythonよりもはるかに優れています。 AWSラムダはreuse it's initialized containers、あなたはコールドスタートの遅延

および/または

せずに、より良い性能の恩恵を受けることができます - 彼らは定期的に呼び出され

  1. :それは場合は、Javaラムダ関数が意味をなす意味します
    1. ランタイムが長い - 機能が実行中の場合機能自体はあなたが風邪を比較this github projectを見てみたいことがあり速く

    のNode.jsよりも大きさの順に実行されている場合は1〜2分間、あなたは本当にスタートアップの約5秒を気にしません開始時間。

    Javaの悪いコールドスタートの大きな要因の1つは、おそらく、Javaプロジェクトが多くの場合、例えば、 node.js関数どのような場合でも、最初の待ち時間を短縮するために、できるだけ小さな関数を保持してください。

    もちろん、プログラミング言語を選択する際のパフォーマンスは、唯一の要因ではありません。私は個人的にnode.jsが非常に便利だと思います。 JSONデータでは、これが私の関数のほとんどで使用する理由です。

3

LambdaのJava関数は、通常、NodeJS関数と比較して、コールドスタートからより多くのリソースを必要とし、応答に時間がかかります。それ以外の場合は違いはありません。

+0

「コールドスタートから"? – suku

+2

機能がリクエストを受け取っていない場合、Amazonはラムダサーバから自動的に削除して、リソースを使用していません。これが起こった場合は、次に要求が来るときに、要求を処理する前に関数をラムダサーバーに再デプロイする必要があります。これは「コールドスタート」と呼ばれます。 –

+0

お知らせいただきありがとうございます。コールドスタートから応答するための単純なjava crud関数のおおよその時間は何ですか? Javaとnodejの両方で、実行に必要なメモリ量はほぼ同じですか? – suku

関連する問題