0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codon を使ってみる

Last updated at Posted at 2025-10-19

これまで Namba やら Pypy やら、(競プロ界隈で)高速化を簡単になる仕組みを見ては手をだしてきたけど、 Codon というコンパイラが来たようなのでちょっと試してみました。

環境

Windows 11 で VSCode を使っています。

インストール

こちらの記事を参考にさせていただきましたが、Code Runner は非使用です。

  • 素直に Microsoft Store から Ubuntu を入れ、正常にインストール終了にはなりましたが、「その後もディストリビューションが入っていません」のエラーが出続けました。
    • その対処は、2つ目の記事にあります。
  • WSL に投げるのを簡単にするために Code Runner を使われていますが、通常の Python との切り替えがわかってないので入れずにすませています。
  • また、Code Runner 実行をした際に、読み取り専用の出力画面に飛ばされてしまいました。ファイルからテストケースを注入する方法も考えましたが、「従来の Python からお手軽に」するための環境整備などもあるので、パスしました。
  • VSCode にタスク登録すれば、ちょっと楽にはなります。

実行

基本、先程の記事を参考に、実行。USERNAME_ON_WSL は WSL で設定した際のユーザー名

wsl /home/USERNAME_ON_WSL/.codon/bin/codon TEST.py
  • TEST.py は実行場所からの相対パスで書けば通りましたが、絶対パスで書くと認識してくれませんでした。
  • WSL 内から Windows のファイル参照をする際には /mnt/c/ (c はドライブの記号)のように書くようなので、こちらで実施したものは通りました。
  • 入力 input() は無事使えました

通常の Python (CPython) との差分

とりあえず動かす、は AtCoder ABC428 D の自分の提出コードで実施しました。

また、事前情報として「ほぼ同じだが」差分あり、情報も確認しつつ、トライ。

結果

  • map がそのままは動かない。Generator として認識された模様。
    • listで囲んでみたら通りました
    • tuple はだめでした。
before (error)
C, D = map(int, input().split())
after
C, D = list(map(int, input().split()))
  • input() は使えましたが、sys.stdin.readline() はエラー。
C, D = list(map(int, sys.stdin.readline().rstrip().split()))
error: 'File' object has no attribute 'readline'
  • ABC428 D では、math.isqrt が使えれば、すこしコードが楽になりますが、それも使えず。
    • math.sqrt はあります

新ジャッジが流れてしまったので、まだ速度差は試せていません。


Codon のドキュメントです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?