Skip to content

Instantly share code, notes, and snippets.

@antimon2
Last active March 16, 2024 00:22
Show Gist options
  • Save antimon2/24bd252590482088809dce7362aa3ce7 to your computer and use it in GitHub Desktop.
Save antimon2/24bd252590482088809dce7362aa3ce7 to your computer and use it in GitHub Desktop.
MyTimes.py.ipynb
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.525Z",
"end_time": "2024-03-16T09:16:58.236000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "versioninfo()",
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"text": "Julia Version 1.10.2\nCommit bd47eca2c8a (2024-03-01 10:14 UTC)\nBuild Info:\n Official https://julialang.org/ release\nPlatform Info:\n OS: Linux (x86_64-linux-gnu)\n CPU: 12 × Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz\n WORD_SIZE: 64\n LIBM: libopenlibm\n LLVM: libLLVM-15.0.7 (ORCJIT, skylake)\nThreads: 1 default, 0 interactive, 1 GC (on 12 virtual cores)\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## `AbstractTime`"
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.526Z",
"end_time": "2024-03-16T09:16:58.582000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "abstract type AbstractTime end\n\nfunction gethour end\nfunction getminute end\nfunction getsecond end",
"execution_count": 2,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 2,
"data": {
"text/plain": "getsecond (generic function with 0 methods)"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.526Z",
"end_time": "2024-03-16T09:16:58.583000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "function Base.show(io::IO, time::AbstractTime)\n print(io,\n string(gethour(time), pad=2),\n ':',\n string(getminute(time), pad=2),\n ':',\n string(getsecond(time), pad=2))\nend",
"execution_count": 3,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## `MyTime`"
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.527Z",
"end_time": "2024-03-16T09:16:58.586000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "struct MyTime <: AbstractTime\n hour::Int\n minute::Int\n second::Int\nend\n\ngethour(time::MyTime) = time.hour\ngetminute(time::MyTime) = time.minute\ngetsecond(time::MyTime) = time.second",
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 4,
"data": {
"text/plain": "getsecond (generic function with 1 method)"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.528Z",
"end_time": "2024-03-16T09:16:58.718000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "mytime1 = MyTime(14, 28, 57)",
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 5,
"data": {
"text/plain": "14:28:57"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.529Z",
"end_time": "2024-03-16T09:16:58.763000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "println(mytime1)",
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"text": "14:28:57\n",
"name": "stdout"
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.529Z",
"end_time": "2024-03-16T09:16:59.105000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "string(mytime1)",
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 7,
"data": {
"text/plain": "\"14:28:57\""
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## `MyTime2`"
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.530Z",
"end_time": "2024-03-16T09:16:59.115000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "struct MyTime2 <: AbstractTime\n seconds::Int\nend\n\ngethour(time::MyTime2) = time.seconds ÷ 3600\ngetminute(time::MyTime2) = time.seconds ÷ 60 % 60\ngetsecond(time::MyTime2) = time.seconds % 60\ngetseconds(time::MyTime2) = time.seconds",
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 8,
"data": {
"text/plain": "getseconds (generic function with 1 method)"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.531Z",
"end_time": "2024-03-16T09:16:59.128000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "function Base.show(io::IO, time::MyTime2)\n @invoke show(io, time::AbstractTime) # `invoke(show, Tuple{IO, AbstractTime}, io, time)` と同じ\n print(io, \" (\", getseconds(time), \"sec(s).)\")\nend",
"execution_count": 9,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.531Z",
"end_time": "2024-03-16T09:16:59.255000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "mytime2 = MyTime2(10000)",
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 10,
"data": {
"text/plain": "02:46:40 (10000sec(s).)"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.532Z",
"end_time": "2024-03-16T09:16:59.275000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "string(mytime2)",
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 11,
"data": {
"text/plain": "\"02:46:40 (10000sec(s).)\""
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Point"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "+ `@invoke fn(arg::AnSupertype)` のように書くと、`fn(arg)` を呼ぶときに引数の型が `AnSupertype` で定義されたメソッドを選択・実行(=invoke)できる!\n+ ※このように書けるのは Julia v1.9 以降\n + Julia v1.7/1.8 は `Base.@invoke ~` と書く必要あり\n + Julia v1.6 以前は `invoke(fn, Tuple{AnSupertype}, arg)` のように書く必要あり"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## `MyTimeWithMS`"
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.532Z",
"end_time": "2024-03-16T09:16:59.285000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "struct MyTimeWithMS <: AbstractTime\n hms::MyTime\n ms::Int\n \n MyTimeWithMS(h, m, s, ms) = new(MyTime(h, m, s), ms)\nend\n\ngethour(time::MyTimeWithMS) = gethour(time.hms)\ngetminute(time::MyTimeWithMS) = getminute(time.hms)\ngetsecond(time::MyTimeWithMS) = getsecond(time.hms)\ngetmillisecond(time::MyTimeWithMS) = time.ms",
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 12,
"data": {
"text/plain": "getmillisecond (generic function with 1 method)"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.533Z",
"end_time": "2024-03-16T09:16:59.286000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "function Base.show(io::IO, time::MyTimeWithMS)\n @invoke show(io, time::AbstractTime) # `invoke(show, Tuple{IO, AbstractTime}, io, time)` と同じ\n print(io, '.', string(getmillisecond(time), pad=3))\nend",
"execution_count": 13,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.534Z",
"end_time": "2024-03-16T09:16:59.422000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "mytime3 = MyTimeWithMS(12, 34, 56, 789)",
"execution_count": 14,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 14,
"data": {
"text/plain": "12:34:56.789"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.535Z",
"end_time": "2024-03-16T09:16:59.442000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "string(mytime3)",
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 15,
"data": {
"text/plain": "\"12:34:56.789\""
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Point"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "+ Julia では(構造の)**継承はできない**(`MyTime` の派生型として `MyTimeWithMS` を定義できない)ので、似たようなことをしたい場合はこのように(ほぼ必然的に)**委譲** を利用することになる。\n+ 説明のために `@invoke` を用いた実装を示したが、以下のように書いても良い: \n ```julia\n function Base.show(io::IO, time::MyTimeWithMS)\n print(io, time.hms, '.', string(getmillisecond(time), pad=3))\n end\n ```"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## ベンチマーク"
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.535Z",
"end_time": "2024-03-16T09:16:59.626000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "using BenchmarkTools",
"execution_count": 16,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.536Z",
"end_time": "2024-03-16T09:16:59.705000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "using Random",
"execution_count": 17,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.536Z",
"end_time": "2024-03-16T09:17:03.632000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "Random.seed!(1234)\n@benchmark string(MyTime(h, m, s)) setup=(h=rand(0:23);m=rand(0:59);s=rand(0:59))",
"execution_count": 18,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 18,
"data": {
"text/plain": "BenchmarkTools.Trial: 10000 samples with 365 evaluations.\n Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m254.304 ns\u001b[22m\u001b[39m … \u001b[35m 7.042 μs\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m0.00% … 94.36%\n Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m260.433 ns \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m0.00%\n Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m277.859 ns\u001b[22m\u001b[39m ± \u001b[32m211.581 ns\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m4.17% ± 5.27%\n\n \u001b[39m▃\u001b[39m█\u001b[34m▇\u001b[39m\u001b[39m▅\u001b[39m▃\u001b[39m \u001b[39m \u001b[39m \u001b[32m \u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m▁\n \u001b[39m█\u001b[39m█\u001b[34m█\u001b[39m\u001b[39m█\u001b[39m█\u001b[39m█\u001b[39m▆\u001b[39m▃\u001b[32m▄\u001b[39m\u001b[39m▃\u001b[39m▂\u001b[39m▃\u001b[39m▅\u001b[39m▅\u001b[39m▆\u001b[39m▄\u001b[39m▅\u001b[39m▃\u001b[39m▄\u001b[39m▅\u001b[39m▄\u001b[39m▃\u001b[39m▃\u001b[39m▃\u001b[39m▂\u001b[39m▃\u001b[39m▅\u001b[39m▆\u001b[39m▅\u001b[39m▆\u001b[39m▆\u001b[39m▆\u001b[39m▇\u001b[39m▇\u001b[39m▆\u001b[39m▆\u001b[39m▆\u001b[39m▇\u001b[39m▇\u001b[39m▆\u001b[39m▃\u001b[39m▅\u001b[39m▅\u001b[39m▄\u001b[39m▂\u001b[39m▄\u001b[39m▂\u001b[39m▃\u001b[39m▄\u001b[39m▃\u001b[39m▃\u001b[39m▃\u001b[39m▃\u001b[39m▃\u001b[39m▃\u001b[39m▃\u001b[39m▄\u001b[39m▅\u001b[39m▃\u001b[39m▃\u001b[39m▄\u001b[39m \u001b[39m█\n 254 ns\u001b[90m \u001b[39m\u001b[90mHistogram: \u001b[39m\u001b[90m\u001b[1mlog(\u001b[22m\u001b[39m\u001b[90mfrequency\u001b[39m\u001b[90m\u001b[1m)\u001b[22m\u001b[39m\u001b[90m by time\u001b[39m 439 ns \u001b[0m\u001b[1m<\u001b[22m\n\n Memory estimate\u001b[90m: \u001b[39m\u001b[33m424 bytes\u001b[39m, allocs estimate\u001b[90m: \u001b[39m\u001b[33m9\u001b[39m."
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.537Z",
"end_time": "2024-03-16T09:17:05.274000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "Random.seed!(1234)\n@benchmark string(MyTime2(secs)) setup=(secs=rand(0:60*60*24-1))",
"execution_count": 19,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 19,
"data": {
"text/plain": "BenchmarkTools.Trial: 10000 samples with 199 evaluations.\n Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m428.714 ns\u001b[22m\u001b[39m … \u001b[35m 10.469 μs\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m0.00% … 94.56%\n Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m448.271 ns \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m0.00%\n Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m475.761 ns\u001b[22m\u001b[39m ± \u001b[32m472.965 ns\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m4.92% ± 4.73%\n\n \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[34m█\u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[32m \u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \n \u001b[39m▁\u001b[39m▂\u001b[39m▇\u001b[39m▅\u001b[39m█\u001b[34m█\u001b[39m\u001b[39m▇\u001b[39m▂\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[32m▁\u001b[39m\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m▁\u001b[39m \u001b[39m▁\n 429 ns\u001b[90m Histogram: frequency by time\u001b[39m 658 ns \u001b[0m\u001b[1m<\u001b[22m\n\n Memory estimate\u001b[90m: \u001b[39m\u001b[33m576 bytes\u001b[39m, allocs estimate\u001b[90m: \u001b[39m\u001b[33m12\u001b[39m."
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2024-03-16T00:16:55.538Z",
"end_time": "2024-03-16T09:17:06.791000+09:00"
},
"trusted": true
},
"cell_type": "code",
"source": "Random.seed!(1234)\n@benchmark string(MyTimeWithMS(h, m, s, ms)) setup=(h=rand(0:23);m=rand(0:59);s=rand(0:59);ms=rand(0:999))",
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 20,
"data": {
"text/plain": "BenchmarkTools.Trial: 10000 samples with 210 evaluations.\n Range \u001b[90m(\u001b[39m\u001b[36m\u001b[1mmin\u001b[22m\u001b[39m … \u001b[35mmax\u001b[39m\u001b[90m): \u001b[39m\u001b[36m\u001b[1m359.471 ns\u001b[22m\u001b[39m … \u001b[35m 10.526 μs\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmin … max\u001b[90m): \u001b[39m0.00% … 95.62%\n Time \u001b[90m(\u001b[39m\u001b[34m\u001b[1mmedian\u001b[22m\u001b[39m\u001b[90m): \u001b[39m\u001b[34m\u001b[1m367.214 ns \u001b[22m\u001b[39m\u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmedian\u001b[90m): \u001b[39m0.00%\n Time \u001b[90m(\u001b[39m\u001b[32m\u001b[1mmean\u001b[22m\u001b[39m ± \u001b[32mσ\u001b[39m\u001b[90m): \u001b[39m\u001b[32m\u001b[1m400.515 ns\u001b[22m\u001b[39m ± \u001b[32m484.719 ns\u001b[39m \u001b[90m┊\u001b[39m GC \u001b[90m(\u001b[39mmean ± σ\u001b[90m): \u001b[39m6.22% ± 4.95%\n\n \u001b[39m▆\u001b[34m█\u001b[39m\u001b[39m▆\u001b[39m▁\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[32m \u001b[39m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m▁\n \u001b[39m█\u001b[34m█\u001b[39m\u001b[39m█\u001b[39m█\u001b[39m█\u001b[39m▆\u001b[39m▄\u001b[39m▄\u001b[32m▃\u001b[39m\u001b[39m▄\u001b[39m▄\u001b[39m▄\u001b[39m▅\u001b[39m▇\u001b[39m▇\u001b[39m▆\u001b[39m▅\u001b[39m▅\u001b[39m▆\u001b[39m▅\u001b[39m▅\u001b[39m▄\u001b[39m▁\u001b[39m▃\u001b[39m▁\u001b[39m▅\u001b[39m▆\u001b[39m▇\u001b[39m▆\u001b[39m▆\u001b[39m▇\u001b[39m▆\u001b[39m▆\u001b[39m▅\u001b[39m▅\u001b[39m▅\u001b[39m▅\u001b[39m▃\u001b[39m▆\u001b[39m▆\u001b[39m▆\u001b[39m▅\u001b[39m▆\u001b[39m▅\u001b[39m▅\u001b[39m▄\u001b[39m▃\u001b[39m▃\u001b[39m▅\u001b[39m▅\u001b[39m▅\u001b[39m▄\u001b[39m▅\u001b[39m▄\u001b[39m▅\u001b[39m▄\u001b[39m▅\u001b[39m▅\u001b[39m▅\u001b[39m▄\u001b[39m▅\u001b[39m \u001b[39m█\n 359 ns\u001b[90m \u001b[39m\u001b[90mHistogram: \u001b[39m\u001b[90m\u001b[1mlog(\u001b[22m\u001b[39m\u001b[90mfrequency\u001b[39m\u001b[90m\u001b[1m)\u001b[22m\u001b[39m\u001b[90m by time\u001b[39m 678 ns \u001b[0m\u001b[1m<\u001b[22m\n\n Memory estimate\u001b[90m: \u001b[39m\u001b[33m608 bytes\u001b[39m, allocs estimate\u001b[90m: \u001b[39m\u001b[33m13\u001b[39m."
},
"metadata": {}
}
]
}
],
"metadata": {
"kernelspec": {
"name": "julia-1.10",
"display_name": "Julia 1.10.2",
"language": "julia"
},
"language_info": {
"file_extension": ".jl",
"name": "julia",
"mimetype": "application/julia",
"version": "1.10.2"
},
"gist": {
"id": "",
"data": {
"description": "MyTimeWithInvoke.ipynb",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
[deps]
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
[compat]
julia = "1.6"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment