重複行の削除マクロ(RemoveDuplicates.js)の処理速度

  1. Ver3.6.1に同梱されている重複行の削除マクロ(RemoveDuplicates.js)について、行数が多いと処理が終わらない問題が発生しました。
    1行の長さや重複具合にもよりますが、下記のような重複無しのデータだと30万行程度から怪しくなってきます。

    1
    2
    3
    (中略)
    300000
    

    こちらでしたら重複無し1000万行でも耐えれましたので、実装方法を変更したほうが良いかもしれません。
    https://www.haijin-boys.com/wiki/重複行を削除

     |  Noah  |  返信
  2. ご報告ありがとうございます。

    確かに…、サンプルの [重複行の削除] マクロは、データを総当たりで検索しているため、動作速度が非常に遅いですね。

    実は、ChatGPT に書いてもらったマクロなんです。

    Mery に同梱するサンプル マクロということでお願いしたので、プログラミング入門者にも分かりやすく、総当たり方式にしてくれたのだと思います。

    > こちらでしたら重複無し1000万行でも耐えれましたので、実装方法を変更したほうが良いかもしれません。
    > https://www.haijin-boys.com/wiki/重複行を削除

    おお、速っ!これは素晴らしいですね。

    差し支えなければ、そのハッシュマップ方式?を採用させていただけるとありがたいのですが、ライセンスや著作権の表示などが必要でしたら、ご返信いただけますでしょうか。

     |  Kuro  |  返信
  3. > 実は、ChatGPT に書いてもらったマクロなんです。
    えっ、すごい。ChatGPTがそこまでできるとは…。
    もう人間がロジックを考えなくてもよい時代が来ているのかもしれませんね。

    > 差し支えなければ、そのハッシュマップ方式?を採用させていただけるとありがたいのですが、ライセンスや著作権の表示などが必要でしたら、ご返信いただけますでしょうか。
    NYSL 0.9981に従いますので、著作権表示などは不要です。
    ご自分の作ったものと同じように扱っていただいて大丈夫です。

     |  Noah  |  返信
  4. ご返信ありがとうございます。

    > もう人間がロジックを考えなくてもよい時代が来ているのかもしれませんね。

    それはありえますね。試しに、ChatGPT に重複行を削除するマクロの最適化をお願いしてみたら…

    #language = "V8"
    if (document.selection.Text == "") {
    	document.selection.SelectAll();
    }
    var lines = document.selection.Text.split("\n");
    var uniqueLines = Array.from(new Set(lines));
    document.selection.Text = uniqueLines.join("\n");
    

    …と、ロジックの部分、1 行でした。(Windows 10 未満だと使えないので没ですが)

    > NYSL 0.9981に従いますので、著作権表示などは不要です。
    > ご自分の作ったものと同じように扱っていただいて大丈夫です。

    ありがとうございます!早速、次のバージョンで採用させていただきたいと思います。

     |  Kuro  |  返信
  5. > それはありえますね。試しに、ChatGPT に重複行を削除するマクロの最適化をお願いしてみたら…
    >
    > …と、ロジックの部分、1 行でした。(Windows 10 未満だと使えないので没ですが)
    あー、なるほど。Setを使うという手がありましたか。
    Setの方が速そうですし、バグも発生しにくいですし、もうChatGPTに聞いてプログラミングした方がよさそうですねぇ。

     |  Noah  |  返信
スポンサーリンク