factorize 1000000000001
[73,137,99990001]

みたいに素因数分解する関数を作り、
1== length (factorize 1000000000001)
を入力すると
素因数分解するだけなのと同様な時間を要するようです。
73と137はすぐ見つかり、遅延評価により即表示されるので、
137が見つかった時点で終了して
False
となってくれる事を期待したのですが、わざわざ最後の素因数まで探してるようです。

lengthがリストの最後に行くまで値を返さないから
ボトルネックになっているという認識で良いですか?