これらのツールの速度が異なる主な理由は、並列処理です。もう1つの要因は、ホップが応答していないと見なされるまでに応答を待機する時間です。逆引きDNSが実行される場合、同様にそれを待つ必要があります。リバースDNSを無効にすると、プレーンなtracerouteコマンドがはるかに高速になります。
もう1つの重要な違いは言及していませんが、2つのツールが出力をレンダリングする方法です。Tracerouteは、トップダウンで出力を生成します。Mtrは出力を別の方法でレンダリングします。この場合、mtrは戻って前の行の出力を更新できます。
これは、後の応答によって出力が不正確になった場合、mtrが戻って更新できるため、mtrは出力が利用可能になるとすぐに表示できることを意味します。tracerouteは戻って出力を更新できないため、最終的に表示する内容を決定するまで待機する必要があります。
たとえば、ホップ番号2が応答しない場合(これは複数のISPで見られる症状です)、tracerouteはホップ番号1を表示し、しばらく待ってからホップ番号2と3を表示します。 tracerouteはホップ番号2からの応答を待機しているため、3は到着していません。後で到着します。
並列処理が多すぎると、出力が不正確になる可能性があります。いくつかのシナリオでは、返信できるパケットの数に制限があります。そのような場合にパケットを送信してもプロセスは高速化されませんが、送信されるパケットが増えて同じ数の応答が返されるため、パケットの損失が多くなります。
この1つの例は、ルート上のホップがARP要求に応答しない場合です。通常、最初のパケットがARP要求をトリガーし、ARP要求がタイムアウトする前にさらにパケットが到着すると、それらのパケットの最後のパケットのみがバッファリングされ、応答が返されます。
別の違いは、ツールがさらにホップの表示を停止する前に、応答のないホップがいくつ表示されるかです。tracerouteコマンドは、要求された数のホップ(デフォルトでは30)継続しますが、mtrコマンドは応答なしで5ホップを超えるとすぐに停止します。