import%20marimo%0A%0A__generated_with%20%3D%20%220.24.0%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20json%0A%20%20%20%20import%20statistics%0A%20%20%20%20import%20time%0A%20%20%20%20from%20pathlib%20import%20Path%0A%0A%20%20%20%20import%20dask.dataframe%20as%20dd%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20orjson%0A%20%20%20%20import%20pandas%20as%20pd%0A%20%20%20%20import%20polars%20as%20pl%0A%20%20%20%20import%20pyarrow%0A%0A%20%20%20%20notebook_dir%20%3D%20Path(__file__).resolve().parent%20if%20%22__file__%22%20in%20globals()%20else%20Path.cwd()%0A%20%20%20%20repo_root%20%3D%20notebook_dir.parents%5B1%5D%0A%20%20%20%20data_dir%20%3D%20repo_root%20%2F%20%22data%22%20%2F%20%22others%22%20%2F%20%22data_io%22%0A%20%20%20%20data_dir.mkdir(parents%3DTrue%2C%20exist_ok%3DTrue)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20data_dir%2C%0A%20%20%20%20%20%20%20%20dd%2C%0A%20%20%20%20%20%20%20%20json%2C%0A%20%20%20%20%20%20%20%20mo%2C%0A%20%20%20%20%20%20%20%20np%2C%0A%20%20%20%20%20%20%20%20orjson%2C%0A%20%20%20%20%20%20%20%20pd%2C%0A%20%20%20%20%20%20%20%20pl%2C%0A%20%20%20%20%20%20%20%20pyarrow%2C%0A%20%20%20%20%20%20%20%20statistics%2C%0A%20%20%20%20%20%20%20%20time%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20%E3%83%87%E3%83%BC%E3%82%BF%E5%85%A5%E5%87%BA%E5%8A%9B%E3%81%AE%E9%AB%98%E9%80%9F%E5%8C%96%0A%0A%20%20%20%20%E8%A1%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A8%20JSON%20%E3%81%AE%E8%AA%AD%E3%81%BF%E6%9B%B8%E3%81%8D%E3%82%92%E3%80%81%E5%BD%A2%E5%BC%8F%E3%81%A8%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E5%A4%89%E3%81%88%E3%81%A6%E5%AE%9F%E6%B8%AC%E3%81%99%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E8%A8%88%E7%AE%97%E3%82%92%E3%81%84%E3%81%8F%E3%82%89%E9%80%9F%E3%81%8F%E3%81%97%E3%81%A6%E3%82%82%E3%80%81%E3%81%9D%E3%81%AE%E6%89%8B%E5%89%8D%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%AA%AD%E3%82%80%E3%81%AE%E3%81%AB%E6%99%82%E9%96%93%E3%81%8C%E3%81%8B%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%81%A6%E3%81%AF%E6%84%8F%E5%91%B3%E3%81%8C%E3%81%AA%E3%81%84%E3%80%82%0A%20%20%20%20%E5%AE%9F%E5%8B%99%E3%81%A7%E3%81%AF**%E8%A8%88%E7%AE%97%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%AB%E6%89%8B%E3%82%92%E4%BB%98%E3%81%91%E3%82%8B%E5%89%8D%E3%81%AB%E3%80%81%E3%81%BE%E3%81%9A%E5%85%A5%E5%87%BA%E5%8A%9B%E3%82%92%E8%A6%8B%E3%82%8B%E3%81%B9%E3%81%8D**%E3%81%93%E3%81%A8%E3%81%8C%E5%A4%9A%E3%81%84%E3%80%82%0A%20%20%20%20%E3%81%93%E3%81%AE%E3%83%8E%E3%83%BC%E3%83%88%E3%81%A7%E6%89%B1%E3%81%86%E3%81%AE%E3%81%AF%E5%BD%A2%E5%BC%8F%E3%81%A8%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E9%81%B8%E6%8A%9E%E3%81%A0%E3%81%91%E3%81%A7%E3%80%81%0A%20%20%20%20%E4%B8%A6%E5%88%97%E5%8C%96%E3%82%84%20GPU%20%E5%8C%96%E3%81%AE%E8%A9%B1%E3%81%AF%E5%87%BA%E3%81%A6%E3%81%93%E3%81%AA%E3%81%84%EF%BC%88%E3%81%9D%E3%82%8C%E3%82%89%E3%81%AF%E3%80%8CPython%20%E9%AB%98%E9%80%9F%E5%8C%96%E3%83%A1%E3%83%A2%E3%80%8D%E3%81%A7%E6%89%B1%E3%81%86%EF%BC%89%E3%80%82%0A%0A%20%20%20%20%E6%AF%94%E3%81%B9%E3%82%8B%E3%81%AE%E3%81%AF%E6%AC%A1%E3%81%AE%202%20%E3%81%A4%E3%80%82%0A%0A%20%20%20%201.%20**%E8%A1%A8%E3%83%87%E3%83%BC%E3%82%BF**%20%E2%80%94%20CSV%20%E3%81%A8%20Parquet%20%E3%82%92%E3%80%81pandas%E3%83%BBpolars%E3%83%BBdask%20%E3%81%A7%E8%AA%AD%E3%82%80%0A%20%20%20%202.%20**JSON**%20%E2%80%94%20%60json%60%20%E3%81%A8%20%60orjson%60%20%E3%81%A7%E8%AA%AD%E3%81%BF%E6%9B%B8%E3%81%8D%E3%81%99%E3%82%8B%0A%0A%20%20%20%20%E7%B5%B6%E5%AF%BE%E5%80%A4%E3%81%AF%E7%92%B0%E5%A2%83%E3%81%AB%E5%BC%B7%E3%81%8F%E4%BE%9D%E5%AD%98%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E3%81%AF**%E6%89%8B%E6%B3%95%E3%81%A9%E3%81%86%E3%81%97%E3%81%AE%E6%AF%94**%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E8%A8%88%E6%B8%AC%E3%81%AE%E5%85%B1%E9%80%9A%E9%83%A8%E5%93%81%0A%0A%20%20%20%20%E8%A8%88%E6%B8%AC%E3%83%98%E3%83%AB%E3%83%91%E3%83%BC%E3%82%92%202%20%E3%81%A4%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B%E3%80%82%0A%0A%20%20%20%20-%20%60timed_call(label%2C%20func%2C%20*args)%60%3A%20%60func%60%20%E3%82%92%201%20%E5%9B%9E%E3%81%A0%E3%81%91%E5%91%BC%E3%81%B3%E3%80%81%E7%B5%8C%E9%81%8E%E7%A7%92%E6%95%B0%E3%82%92%E8%BF%94%E3%81%99%E3%80%82%0A%20%20%20%20-%20%60benchmark(label%2C%20func%2C%20repeats%3D7%2C%20warmup_s%3D0.5)%60%3A%20%60warmup_s%60%20%E7%A7%92%E3%81%B6%E3%82%93%E5%9B%9E%E3%81%97%E7%B6%9A%E3%81%91%E3%81%A6%E3%81%8B%E3%82%89%0A%20%20%20%20%20%20%60repeats%60%20%E5%9B%9E%E8%A8%88%E6%B8%AC%E3%81%97%E3%80%81%E4%B8%AD%E5%A4%AE%E5%80%A4%E3%81%A8%E6%9C%80%E5%B0%8F%E5%80%A4%E3%82%92%E8%BF%94%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%A2%E3%83%83%E3%83%97%E3%82%92%E6%8C%9F%E3%82%80%E3%81%AE%E3%81%AF%E3%80%81%E5%88%9D%E5%9B%9E%E3%81%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%B8%E8%BC%89%E3%82%8B%E5%88%86%E3%82%84%E3%80%81%0A%20%20%20%20%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E9%81%85%E5%BB%B6%E5%88%9D%E6%9C%9F%E5%8C%96%E3%82%92%E8%A8%88%E6%B8%AC%E3%81%8B%E3%82%89%E5%A4%96%E3%81%99%E3%81%9F%E3%82%81%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%81%A9%E3%81%A1%E3%82%89%E3%82%82%20%60time.perf_counter%60%EF%BC%88%E5%8D%98%E8%AA%BF%E5%A2%97%E5%8A%A0%E3%83%BB%E9%AB%98%E5%88%86%E8%A7%A3%E8%83%BD%EF%BC%89%E3%82%92%E4%BD%BF%E3%81%86%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(statistics%2C%20time)%3A%0A%20%20%20%20def%20timed_call(label%3A%20str%2C%20func%2C%20*args%2C%20**kwargs)%3A%0A%20%20%20%20%20%20%20%20start%20%3D%20time.perf_counter()%0A%20%20%20%20%20%20%20%20value%20%3D%20func(*args%2C%20**kwargs)%0A%20%20%20%20%20%20%20%20elapsed%20%3D%20time.perf_counter()%20-%20start%0A%20%20%20%20%20%20%20%20print(f%22%5B%7Blabel%7D%5D%20%7Belapsed%3A.3g%7D%20s%22)%0A%20%20%20%20%20%20%20%20return%20value%2C%20elapsed%0A%0A%20%20%20%20def%20benchmark(label%3A%20str%2C%20func%2C%20repeats%3A%20int%20%3D%207%2C%20warmup_s%3A%20float%20%3D%200.5)%3A%0A%20%20%20%20%20%20%20%20deadline%20%3D%20time.perf_counter()%20%2B%20warmup_s%0A%20%20%20%20%20%20%20%20while%20True%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20func()%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20time.perf_counter()%20%3E%3D%20deadline%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%0A%20%20%20%20%20%20%20%20samples%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20for%20_%20in%20range(repeats)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20start%20%3D%20time.perf_counter()%0A%20%20%20%20%20%20%20%20%20%20%20%20func()%0A%20%20%20%20%20%20%20%20%20%20%20%20samples.append(time.perf_counter()%20-%20start)%0A%20%20%20%20%20%20%20%20median_s%20%3D%20statistics.median(samples)%0A%20%20%20%20%20%20%20%20best_s%20%3D%20min(samples)%0A%20%20%20%20%20%20%20%20print(f%22%5B%7Blabel%7D%5D%20median%20%7Bmedian_s%20*%201e3%3A.3f%7D%20ms%20%2F%20min%20%7Bbest_s%20*%201e3%3A.3f%7D%20ms%20(n%3D%7Brepeats%7D)%22)%0A%20%20%20%20%20%20%20%20return%20%7B%22case%22%3A%20label%2C%20%22median_ms%22%3A%20median_s%20*%201e3%2C%20%22min_ms%22%3A%20best_s%20*%201e3%7D%0A%0A%20%20%20%20return%20benchmark%2C%20timed_call%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%0A%0A%20%20%20%20%E8%A8%88%E6%B8%AC%E5%80%A4%E3%81%AE%E6%84%8F%E5%91%B3%E3%81%AF%E7%92%B0%E5%A2%83%E3%81%A7%E5%A4%89%E3%82%8F%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81CPU%20%E6%95%B0%E3%81%A8%E4%B8%BB%E8%A6%81%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E8%A8%98%E9%8C%B2%E3%81%97%E3%81%A6%E3%81%8A%E3%81%8F%E3%80%82%0A%20%20%20%20CSV%20%E3%81%AE%E3%83%91%E3%83%BC%E3%82%B5%E3%81%AF%E8%A4%87%E6%95%B0%E3%82%B3%E3%82%A2%E3%82%92%E4%BD%BF%E3%81%86%E5%AE%9F%E8%A3%85%E3%81%8C%E3%81%82%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81CPU%20%E6%95%B0%E3%81%AF%E5%8A%B9%E3%81%84%E3%81%A6%E3%81%8F%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(orjson%2C%20pd%2C%20pl%2C%20pyarrow)%3A%0A%20%20%20%20import%20os%0A%0A%20%20%20%20import%20dask%0A%0A%20%20%20%20pd.DataFrame(%5B%0A%20%20%20%20%20%20%20%20%7B%22item%22%3A%20%22CPU%20count%22%2C%20%22value%22%3A%20str(os.cpu_count())%7D%2C%0A%20%20%20%20%20%20%20%20%7B%22item%22%3A%20%22pandas%22%2C%20%22value%22%3A%20pd.__version__%7D%2C%0A%20%20%20%20%20%20%20%20%7B%22item%22%3A%20%22polars%22%2C%20%22value%22%3A%20pl.__version__%7D%2C%0A%20%20%20%20%20%20%20%20%7B%22item%22%3A%20%22pyarrow%22%2C%20%22value%22%3A%20pyarrow.__version__%7D%2C%0A%20%20%20%20%20%20%20%20%7B%22item%22%3A%20%22dask%22%2C%20%22value%22%3A%20dask.__version__%7D%2C%0A%20%20%20%20%20%20%20%20%7B%22item%22%3A%20%22orjson%22%2C%20%22value%22%3A%20orjson.__version__%7D%2C%0A%20%20%20%20%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E8%A1%A8%E3%83%87%E3%83%BC%E3%82%BF%EF%BC%9ACSV%20%E3%81%A8%20Parquet%0A%0A%20%20%20%20%E9%A1%8C%E6%9D%90%E3%81%AF%20200%2C000%20%E8%A1%8C%204%20%E5%88%97%EF%BC%88%60carat%60%20%2F%20%60depth%60%20%2F%20%60table%60%20%2F%20%60price%60%EF%BC%89%E3%81%A7%E3%80%81%0A%20%20%20%20CSV%20%E3%81%A8%20Parquet%20%E3%81%AE%E4%B8%A1%E6%96%B9%E3%81%A7%20%60data%2Fothers%2Fdata_io%2F%60%20%E3%81%B8%E6%9B%B8%E3%81%8D%E5%87%BA%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%A7%E6%AF%94%E3%81%B9%E3%82%8B%E3%81%AE%E3%81%AF%E6%AC%A1%E3%81%AE%206%20%E9%80%9A%E3%82%8A%E3%80%82%0A%0A%20%20%20%20%7C%20%E6%89%8B%E6%B3%95%20%7C%20%E4%B8%AD%E8%BA%AB%20%7C%0A%20%20%20%20%7C%20---%20%7C%20---%20%7C%0A%20%20%20%20%7C%20%60pandas.read_csv%60%20%7C%20%E6%97%A2%E5%AE%9A%E3%81%AE%20C%20%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%20%7C%0A%20%20%20%20%7C%20%60pandas.read_csv(engine%3D%22pyarrow%22)%60%20%7C%20Arrow%20%E3%81%AE%E3%83%91%E3%83%BC%E3%82%B5%E3%80%82%E8%A4%87%E6%95%B0%E3%82%B3%E3%82%A2%E3%82%92%E4%BD%BF%E3%81%86%20%7C%0A%20%20%20%20%7C%20%60pandas.read_parquet%60%20%7C%20%E5%88%97%E6%8C%87%E5%90%91%E3%83%BB%E5%9E%8B%E4%BB%98%E3%81%8D%E3%83%BB%E5%9C%A7%E7%B8%AE%E6%B8%88%E3%81%BF%E3%81%AE%E5%BD%A2%E5%BC%8F%20%7C%0A%20%20%20%20%7C%20%60polars.read_csv%60%20%7C%20Rust%20%E5%AE%9F%E8%A3%85%E3%80%82%E4%B8%A6%E5%88%97%E3%83%91%E3%83%BC%E3%82%B9%20%7C%0A%20%20%20%20%7C%20%60polars.read_parquet%60%20%7C%20%E5%90%8C%E4%B8%8A%20%7C%0A%20%20%20%20%7C%20%60dask.dataframe.read_csv().compute()%60%20%7C%20%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E7%B5%84%E3%82%93%E3%81%A7%E5%88%86%E5%89%B2%E5%AE%9F%E8%A1%8C%20%7C%0A%0A%20%20%20%20%E6%B3%A8%E7%9B%AE%E3%81%97%E3%81%A6%E3%81%BB%E3%81%97%E3%81%84%E3%81%AE%E3%81%AF%202%20%E7%82%B9%E3%80%82%0A%0A%20%20%20%201.%20**CSV%20%E3%82%92%E3%82%84%E3%82%81%E3%82%8B%E3%81%A8%E9%80%9F%E3%81%8F%E3%81%AA%E3%82%8B%E3%80%82**%20CSV%20%E3%81%AF%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%E8%AA%AD%E3%82%80%E3%81%9F%E3%81%B3%E3%81%AB%E6%95%B0%E5%80%A4%E3%81%B8%E5%A4%89%E6%8F%9B%E3%81%97%E7%9B%B4%E3%81%97%E3%80%81%0A%20%20%20%20%20%20%20%E5%9E%8B%E3%82%92%E6%8E%A8%E5%AE%9A%E3%81%97%E7%9B%B4%E3%81%99%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%80%82Parquet%20%E3%81%AF%E5%9E%8B%E3%81%A8%E5%88%97%E3%81%AE%E5%A2%83%E7%95%8C%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%9D%E3%81%AE%E4%BD%9C%E6%A5%AD%E3%81%8C%E8%A6%81%E3%82%89%E3%81%AA%E3%81%84%E3%80%82%0A%20%20%20%20%20%20%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%82%E5%B0%8F%E3%81%95%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81%60size_MiB%60%20%E5%88%97%E3%81%A8%E4%BD%B5%E3%81%9B%E3%81%A6%E8%A6%8B%E3%82%8B%E3%80%82%0A%20%20%20%202.%20**%E5%90%8C%E3%81%98%20CSV%20%E3%81%A7%E3%82%82%E3%83%91%E3%83%BC%E3%82%B5%E3%81%A7%E5%A4%89%E3%82%8F%E3%82%8B%E3%80%82**%20pandas%20%E3%81%AE%E6%97%A2%E5%AE%9A%E3%81%AF%E5%8D%98%E4%B8%80%E3%82%B3%E3%82%A2%E3%81%AE%20C%20%E5%AE%9F%E8%A3%85%E3%81%A0%E3%81%8C%E3%80%81%0A%20%20%20%20%20%20%20%60engine%3D%22pyarrow%22%60%20%E3%81%A8%20polars%20%E3%81%AF%E8%A4%87%E6%95%B0%E3%82%B3%E3%82%A2%E3%81%A7%E3%83%91%E3%83%BC%E3%82%B9%E3%81%99%E3%82%8B%E3%80%82%0A%0A%20%20%20%20dask%20%E3%81%AF%E3%81%93%E3%81%AE%E8%A6%8F%E6%A8%A1%E3%81%A7%E3%81%AF%20pandas%20%E3%82%88%E3%82%8A%E9%81%85%E3%81%84%E3%80%82%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%B0%E3%83%A9%E3%83%95%E3%81%AE%E6%A7%8B%E7%AF%89%E3%81%A8%E3%81%84%E3%81%86%E5%9B%BA%E5%AE%9A%E3%82%B3%E3%82%B9%E3%83%88%E3%81%8C%E4%B9%97%E3%82%8B%E3%81%9F%E3%82%81%E3%81%A7%E3%80%81%0A%20%20%20%20%E6%9C%89%E5%88%A9%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%AE%E3%81%AF%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AB%E8%BC%89%E3%82%89%E3%81%AA%E3%81%84%E5%A4%A7%E3%81%8D%E3%81%95%E3%82%84%E3%80%81%E5%88%86%E5%89%B2%E3%81%97%E3%81%A6%E4%B8%A6%E5%88%97%E5%87%A6%E7%90%86%E3%81%A7%E3%81%8D%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(benchmark%2C%20data_dir%2C%20dd%2C%20np%2C%20pd%2C%20pl)%3A%0A%20%20%20%20rng_data%20%3D%20np.random.default_rng(0)%0A%20%20%20%20TABLE_ROWS%20%3D%20200_000%0A%20%20%20%20csv_path%20%3D%20data_dir%20%2F%20%22diamonds.csv%22%0A%20%20%20%20parquet_path%20%3D%20data_dir%20%2F%20%22diamonds.parquet%22%0A%20%20%20%20table_frame%20%3D%20pd.DataFrame(%7B%0A%20%20%20%20%20%20%20%20%22carat%22%3A%20rng_data.uniform(0.2%2C%202.5%2C%20size%3DTABLE_ROWS).round(3)%2C%0A%20%20%20%20%20%20%20%20%22depth%22%3A%20rng_data.uniform(55.0%2C%2070.0%2C%20size%3DTABLE_ROWS).round(3)%2C%0A%20%20%20%20%20%20%20%20%22table%22%3A%20rng_data.uniform(50.0%2C%2070.0%2C%20size%3DTABLE_ROWS).round(3)%2C%0A%20%20%20%20%20%20%20%20%22price%22%3A%20rng_data.integers(300%2C%2018000%2C%20size%3DTABLE_ROWS)%2C%0A%20%20%20%20%7D)%0A%20%20%20%20table_frame.to_csv(csv_path%2C%20index%3DFalse)%0A%20%20%20%20table_frame.to_parquet(parquet_path)%0A%0A%20%20%20%20table_cases%20%3D%20%5B%0A%20%20%20%20%20%20%20%20(%22pandas.read_csv%20(c)%22%2C%20%22csv%22%2C%20lambda%3A%20pd.read_csv(csv_path))%2C%0A%20%20%20%20%20%20%20%20(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22pandas.read_csv%20(pyarrow)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22csv%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20lambda%3A%20pd.read_csv(csv_path%2C%20engine%3D%22pyarrow%22)%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20(%22pandas.read_parquet%22%2C%20%22parquet%22%2C%20lambda%3A%20pd.read_parquet(parquet_path))%2C%0A%20%20%20%20%20%20%20%20(%22polars.read_csv%22%2C%20%22csv%22%2C%20lambda%3A%20pl.read_csv(csv_path))%2C%0A%20%20%20%20%20%20%20%20(%22polars.read_parquet%22%2C%20%22parquet%22%2C%20lambda%3A%20pl.read_parquet(parquet_path))%2C%0A%20%20%20%20%20%20%20%20(%22dask.read_csv%22%2C%20%22csv%22%2C%20lambda%3A%20dd.read_csv(csv_path).compute())%2C%0A%20%20%20%20%5D%0A%20%20%20%20table_rows%20%3D%20%5B%5D%0A%20%20%20%20for%20_label%2C%20_fmt%2C%20_reader%20in%20table_cases%3A%0A%20%20%20%20%20%20%20%20_result%20%3D%20benchmark(_label%2C%20_reader%2C%20repeats%3D3%2C%20warmup_s%3D0.1)%0A%20%20%20%20%20%20%20%20_path%20%3D%20csv_path%20if%20_fmt%20%3D%3D%20%22csv%22%20else%20parquet_path%0A%20%20%20%20%20%20%20%20table_rows.append(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22task%22%3A%20_label%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22format%22%3A%20_fmt%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22elapsed_ms%22%3A%20_result%5B%22min_ms%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22size_MiB%22%3A%20_path.stat().st_size%20%2F%202**20%2C%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20_frame%20%3D%20pd.DataFrame(table_rows)%0A%20%20%20%20_frame%5B%22speedup_vs_pandas_csv%22%5D%20%3D%20_frame%5B%22elapsed_ms%22%5D.iloc%5B0%5D%20%2F%20_frame%5B%22elapsed_ms%22%5D%0A%20%20%20%20_frame.round(3)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20JSON%EF%BC%9A%E6%A8%99%E6%BA%96%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A8%20orjson%0A%0A%20%20%20%205%2C000%20%E8%A6%81%E7%B4%A0%E3%81%AE%E9%85%8D%E5%88%97%EF%BC%88%E5%90%84%E8%A6%81%E7%B4%A0%E3%81%AF%20%60id%60%20%2F%20%60value%60%20%2F%20%60square%60%EF%BC%89%E3%82%92%E9%A1%8C%E6%9D%90%E3%81%AB%E3%80%81%0A%20%20%20%20%60json%60%20%E3%81%A8%20%60orjson%60%20%E3%82%92%E8%AA%AD%E3%81%BF%E6%9B%B8%E3%81%8D%E3%81%AE%E4%B8%A1%E6%96%B9%E3%81%A7%E6%AF%94%E3%81%B9%E3%82%8B%E3%80%82%0A%20%20%20%20%60orjson%60%20%E3%81%AF%20C%20%E5%AE%9F%E8%A3%85%E3%81%A7%E3%80%81%E3%81%93%E3%81%AE%E8%A6%8F%E6%A8%A1%E3%81%A7%E3%82%82%E7%A2%BA%E5%AE%9F%E3%81%AB%E9%80%9F%E3%81%84%E3%80%82%0A%0A%20%20%20%20%E3%81%93%E3%81%A1%E3%82%89%E3%81%AF%201%20%E5%9B%9E%E3%81%A0%E3%81%91%E3%81%AE%E8%A8%88%E6%B8%AC%E3%81%AA%E3%81%AE%E3%81%A7%20%60timed_call%60%20%E3%82%92%E4%BD%BF%E3%81%86%E3%80%82%0A%20%20%20%20%E8%A1%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%81%BB%E3%81%A9%E6%89%80%E8%A6%81%E6%99%82%E9%96%93%E3%81%8C%E9%95%B7%E3%81%8F%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%80%81%E5%A4%96%E4%B9%B1%E3%81%AE%E5%BD%B1%E9%9F%BF%E3%81%AF%E7%9B%B8%E5%AF%BE%E7%9A%84%E3%81%AB%E5%A4%A7%E3%81%8D%E3%81%84%E7%82%B9%E3%81%AB%E6%B3%A8%E6%84%8F%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(data_dir%2C%20json%2C%20np%2C%20orjson%2C%20pd%2C%20timed_call)%3A%0A%20%20%20%20rng_json%20%3D%20np.random.default_rng(1)%0A%20%20%20%20json_path%20%3D%20data_dir%20%2F%20%22large-file.json%22%0A%20%20%20%20json_payload%20%3D%20%5B%0A%20%20%20%20%20%20%20%20%7B%22id%22%3A%20int(index)%2C%20%22value%22%3A%20float(value)%2C%20%22square%22%3A%20float(value**2)%7D%0A%20%20%20%20%20%20%20%20for%20index%2C%20value%20in%20enumerate(rng_json.normal(size%3D5000))%0A%20%20%20%20%5D%0A%20%20%20%20json_path.write_text(json.dumps(json_payload%2C%20ensure_ascii%3DFalse)%2C%20encoding%3D%22utf-8%22)%0A%0A%20%20%20%20_%2C%20json_elapsed%20%3D%20timed_call(%0A%20%20%20%20%20%20%20%20%22json.loads%22%2C%20lambda%3A%20json.loads(json_path.read_text(encoding%3D%22utf-8%22))%0A%20%20%20%20)%0A%20%20%20%20data_orjson%2C%20orjson_elapsed%20%3D%20timed_call(%0A%20%20%20%20%20%20%20%20%22orjson.loads%22%2C%20lambda%3A%20orjson.loads(json_path.read_bytes())%0A%20%20%20%20)%0A%20%20%20%20_%2C%20dump_elapsed%20%3D%20timed_call(%0A%20%20%20%20%20%20%20%20%22json.dumps%22%2C%0A%20%20%20%20%20%20%20%20lambda%3A%20(data_dir%20%2F%20%22large-file.standard.json%22).write_text(%0A%20%20%20%20%20%20%20%20%20%20%20%20json.dumps(data_orjson)%2C%20encoding%3D%22utf-8%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20)%0A%20%20%20%20_%2C%20orjson_dump_elapsed%20%3D%20timed_call(%0A%20%20%20%20%20%20%20%20%22orjson.dumps%22%2C%0A%20%20%20%20%20%20%20%20lambda%3A%20(data_dir%20%2F%20%22large-file.orjson.json%22).write_bytes(orjson.dumps(data_orjson))%2C%0A%20%20%20%20)%0A%20%20%20%20pd.DataFrame(%5B%0A%20%20%20%20%20%20%20%20%7B%22task%22%3A%20%22json.loads%22%2C%20%22elapsed_s%22%3A%20json_elapsed%2C%20%22group%22%3A%20%22read%22%7D%2C%0A%20%20%20%20%20%20%20%20%7B%22task%22%3A%20%22orjson.loads%22%2C%20%22elapsed_s%22%3A%20orjson_elapsed%2C%20%22group%22%3A%20%22read%22%7D%2C%0A%20%20%20%20%20%20%20%20%7B%22task%22%3A%20%22json.dumps%22%2C%20%22elapsed_s%22%3A%20dump_elapsed%2C%20%22group%22%3A%20%22write%22%7D%2C%0A%20%20%20%20%20%20%20%20%7B%22task%22%3A%20%22orjson.dumps%22%2C%20%22elapsed_s%22%3A%20orjson_dump_elapsed%2C%20%22group%22%3A%20%22write%22%7D%2C%0A%20%20%20%20%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%81%BE%E3%81%A8%E3%82%81%0A%0A%20%20%20%20%E5%AE%9F%E5%8B%99%E3%81%A7%E5%8A%B9%E3%81%8F%E9%A0%86%E3%81%AB%E4%B8%A6%E3%81%B9%E3%82%8B%E3%81%A8%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8B%E3%80%82%0A%0A%20%20%20%201.%20**%E5%BD%A2%E5%BC%8F%E3%82%92%E5%A4%89%E3%81%88%E3%82%8B%E3%80%82**%20CSV%20%E3%81%8B%E3%82%89%20Parquet%20%E3%81%B8%E7%A7%BB%E3%81%99%E3%81%AE%E3%81%8C%E6%9C%80%E3%82%82%E5%8A%B9%E3%81%8F%E3%80%82%0A%20%20%20%20%20%20%20%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%8C%E9%80%9F%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%86%E3%81%88%E3%80%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%82%E5%B0%8F%E3%81%95%E3%81%8F%E3%81%AA%E3%82%8B%E3%80%82%0A%20%20%20%20%20%20%20%E5%9E%8B%E3%81%8C%E4%BF%9D%E5%AD%98%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E5%BE%8C%E3%81%AE%E5%9E%8B%E5%A4%89%E6%8F%9B%E3%82%82%E8%A6%81%E3%82%89%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8B%E3%80%82%0A%20%20%20%202.%20**%E3%83%91%E3%83%BC%E3%82%B5%E3%82%92%E5%A4%89%E3%81%88%E3%82%8B%E3%80%82**%20CSV%20%E3%81%AE%E3%81%BE%E3%81%BE%E3%81%A7%E3%82%82%20%60engine%3D%22pyarrow%22%60%20%E3%82%84%20polars%20%E3%81%AB%E3%81%99%E3%82%8C%E3%81%B0%0A%20%20%20%20%20%20%20%E8%A4%87%E6%95%B0%E3%82%B3%E3%82%A2%E3%81%A7%E3%83%91%E3%83%BC%E3%82%B9%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%E6%97%A2%E5%AD%98%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%A4%A7%E3%81%8D%E3%81%8F%E5%A4%89%E3%81%88%E3%81%9A%E3%81%AB%E6%B8%88%E3%82%80%E3%80%82%0A%20%20%20%203.%20**JSON%20%E3%81%AF%20%60orjson%60%20%E3%81%AB%E3%81%99%E3%82%8B%E3%80%82**%20%E6%A8%99%E6%BA%96%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%8B%E3%82%89%E3%81%AE%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%81%AF%0A%20%20%20%20%20%20%20%60loads%60%20%2F%20%60dumps%60%20%E3%81%AE%E5%90%8D%E5%89%8D%E3%81%8C%E5%90%8C%E3%81%98%E3%81%AA%E3%81%AE%E3%81%A7%E5%AE%B9%E6%98%93%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E9%80%86%E3%81%AB%20**dask%20%E3%81%AF%E3%81%93%E3%81%AE%E8%A6%8F%E6%A8%A1%E3%81%A7%E3%81%AF%E5%8A%B9%E3%81%8B%E3%81%AA%E3%81%84**%E3%80%82%E5%88%86%E6%95%A3%E5%87%A6%E7%90%86%E3%81%AE%E6%9E%A0%E7%B5%84%E3%81%BF%E3%81%AF%E3%80%81%0A%20%20%20%20%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AB%E8%BC%89%E3%82%89%E3%81%AA%E3%81%84%E5%A4%A7%E3%81%8D%E3%81%95%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E5%88%9D%E3%82%81%E3%81%A6%E5%85%83%E3%81%8C%E5%8F%96%E3%82%8C%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
8b808af5bef466b9e5eb542243461e02