Bash
IPアドレス

自身のIPを取得するサービスの速度を比較する

自分自身のIPアドレスを返してくれるWebサービス、いろいろあります。
自動化したい際等にcurlでさっと取れるのが便利です。
icanhazip.comとかifconfig.coとか。
正直なんでもいいんですが、できるだけ速いほうがいいなとは思ったので比較してみました。

測定スクリプト

Bashで浮動小数点計算とかやらせるもんじゃないと思いました。(結局bcですが

#!/bin/bash
# https://gist.github.com/coord-e/b0e9b303686a8f50d45da0e5815c3565

ITERATION_NUM=10

CANDIDATES=("ifconfig.me" "icanhazip.com" "ipinfo.io/ip" "checkip.amazonaws.com" "inet-ip.info" "httpbin.org/ip" "ifconfig.co")
declare -A RESULTS

for idx in $(seq $ITERATION_NUM); do
  echo -ne "Iteration $(printf %02d $idx)"
  for item in ${CANDIDATES[@]}; do
    elapsed=$(TIMEFORMAT='%3R'; { time curl -s $item > /dev/null ; } 2>&1 | tr -d '\n')
    if [ $idx -eq 1 ]; then
      RESULTS[$item]=$elapsed
    else
      RESULTS[$item]=$(bc <<< ${RESULTS[$item]}+$elapsed)
    fi
    echo -n '.'
  done
  echo
  sleep 5
done

echo "Done."

for item in ${!RESULTS[@]}; do
  average=$(bc <<< "scale=4; ${RESULTS[$item]}/$ITERATION_NUM")
  echo -e "$item:\t$average"
done

CANDIDATESに調査したいアドレスを配列で押し込みます。
ITERATION_NUM回の平均を取ります。
別にちゃんとIP取れてるかチェックとかはしてないので、IP取得系サービスだけじゃなくてもいろんなサイトの比較に使えるかもしれません。
(接続の速さというよりは、IPを返すまでの速さが知りたいのであえてcurlで測っています)

結果

inet-ip.info:           .1697
checkip.amazonaws.com:  .5114
ifconfig.co:            .8050
ipinfo.io/ip:           2.3308
icanhazip.com:          .4304
httpbin.org/ip:         .5023
ifconfig.me:            62.5687

(私の環境での結果です)

結論

inet-ip.infoが速そうです。
何度か試したら変わったりしたので()、参考までにどうぞ。