{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 基本的に関数(function)にまとめる \n", "\n", "いろいろなところで説明されているように、Juliaでは関数で書かないと速度が出ません。 \n", "書き方により差は出ますが、百倍以上の差があります。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using BenchmarkTools" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 下記に$1$から$10^8$まで足していく計算例を示します。 " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 9.758943 seconds (400.00 M allocations: 7.451 GiB, 2.91% gc time)\n", "5000000050000000" ] } ], "source": [ "a = 0\n", "N0 = 10^8\n", "@time for x in 1:N0\n", " global a\n", " a += x\n", "end\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.006952 seconds (2.39 k allocations: 168.797 KiB, 99.45% compilation time)\n", "5000000050000000" ] } ], "source": [ "a = 0\n", "N0 = 10^8\n", "function f(a, N0)\n", " a = 0\n", " for x in 1:N0\n", " a += x\n", " end\n", " return a\n", "end\n", "\n", "@time b = f(a, N0)\n", "print(b)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.9.0-beta3", "language": "julia", "name": "julia-1.9" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.9.0" } }, "nbformat": 4, "nbformat_minor": 4 }