profile
viewpoint
Timo Kluck tkluck Google Amsterdam https://www.infty.nl SRE at Google

tkluck/GaloisFields.jl 31

Finite fields for Julia

tkluck/pac4cli 21

Proxy-auto-discovery for command-line applications

tkluck/pyperler 15

Use perl scripts and libraries from Python

tkluck/accumulation_tree 11

Red/black tree with support for fast accumulation of values in a key range

tkluck/HAML.jl 11

HTML Abstract Markup Language for Julia. Inspired by Ruby's HAML.

tkluck/pandas-nesteddata 4

Transform hierarchical data (nested arrays/hashes) to a pandas DataFrame according to a compact, readable, user-specified pattern

tkluck/PolynomialRings.jl 4

A library for arithmetic and algebra with multi-variable polynomials.

tkluck/InPlace.jl 2

InPlace.jl - in-place operations where possible

tkluck/FGb.jl 1

A Julia wrapper for a lightning-fast Groebner basis engine

create barnchtkluck/StatProfilerHTML.jl

branch : haml-next

created branch time in 22 days

CommitCommentEvent

push eventtkluck/StatProfilerHTML.jl

Timo Kluck

commit sha 0b1eb2b255f3c8d17467b30a842e7f5ebe69a80f

Version bump: 1.4.1

view details

push time in 22 days

push eventtkluck/StatProfilerHTML.jl

Timo Kluck

commit sha edf7930692985c743b0b933cce5f35822f6e7531

Memoize find_source_file This does a lot of stat() calls so this speeds things up considerably.

view details

Timo Kluck

commit sha 8478f550ceda6e0c29fbfcf8da8d5557a9ea375d

Convert to TracePoint once and for all

view details

Timo Kluck

commit sha 17ed03ec844701ae06279109afefec26b3cd47e1

Add some typing and precompile This follows the advice from https://julialang.org/blog/2021/01/precompile_tutorial/ to get most of the HAML rendering precompiled as part of the package.

view details

Timo Kluck

commit sha f9904a6fe25e950b8174270655758a4615f72864

Don't take a lock on every write operation This is particularly slow for some character-by-character writes that a future version of HAML might do for html escaping. This alleviates that situation.

view details

Timo Kluck

commit sha 3ffa4ffe94866abe7f67e9ac19ae673b68bc867b

Micro-optimization: remove intermediate vector allocation

view details

Timo Kluck

commit sha 0b9f8b66e474c8cf65b7dc2d29a05cc397db578e

break long lines

view details

Timo Kluck

commit sha 00ffb5e3b5a1d927d2b3fe279957b1c63406a9d2

Add julia v1.7 to CI

view details

Timo Kluck

commit sha a17bb46618d90c9f4d20a6a92c8d794f84f2ae82

Update TagBot configuration

view details

Timo Kluck

commit sha 0b1eb2b255f3c8d17467b30a842e7f5ebe69a80f

Version bump: 1.4.1

view details

push time in 22 days

push eventtkluck/StatProfilerHTML.jl

Petr Vana

commit sha 7c7382ee4a01a0753d87a82f2353806b895b26ee

Update deps to DataStructures@v0.18

view details

Timo Kluck

commit sha e8158d8bd5db5cd0d501c34aede331bad81e26f9

Bump version 1.2.2

view details

Timo Kluck

commit sha bc44e3ab2164a84ff494655f2d8ee61644cc4ab3

Add support for specifying the output directory

view details

Timo Kluck

commit sha 3af6779d66bac359a70debfede96b134e4699099

Bump version 1.3.0

view details

Timo Kluck

commit sha 9590fd5fc408a64e346f64d76537a2859c94677a

Be more mindful of output file name lengths This makes the following two changes: - open files for writing by their relative path, which will often be shorter than the absolute path (and in any case the user has more control over any path length issues if they have the option to either expand it or not _before_ calling `statprofhtml()`) - Put a cap on the output file name lengths by using a hash instead of an encoding. This means we have to use bytes2hex rather than base64 because `/` is a valid base64 character. (This was already a bug before, but I probably never ran into it because encoding only paths never results in a `/`.)

view details

Timo Kluck

commit sha e3ec5b96b6eb3f256ffc11094e3038547139af24

Bump version 1.4 We need a minor version bump because the fix for #27 changes the package dependencies.

view details

Timo Kluck

commit sha edf7930692985c743b0b933cce5f35822f6e7531

Memoize find_source_file This does a lot of stat() calls so this speeds things up considerably.

view details

Timo Kluck

commit sha 8478f550ceda6e0c29fbfcf8da8d5557a9ea375d

Convert to TracePoint once and for all

view details

Timo Kluck

commit sha 17ed03ec844701ae06279109afefec26b3cd47e1

Add some typing and precompile This follows the advice from https://julialang.org/blog/2021/01/precompile_tutorial/ to get most of the HAML rendering precompiled as part of the package.

view details

Timo Kluck

commit sha f9904a6fe25e950b8174270655758a4615f72864

Don't take a lock on every write operation This is particularly slow for some character-by-character writes that a future version of HAML might do for html escaping. This alleviates that situation.

view details

Timo Kluck

commit sha 3ffa4ffe94866abe7f67e9ac19ae673b68bc867b

Micro-optimization: remove intermediate vector allocation

view details

Timo Kluck

commit sha 0b9f8b66e474c8cf65b7dc2d29a05cc397db578e

break long lines

view details

Timo Kluck

commit sha 00ffb5e3b5a1d927d2b3fe279957b1c63406a9d2

Add julia v1.7 to CI

view details

Timo Kluck

commit sha a17bb46618d90c9f4d20a6a92c8d794f84f2ae82

Update TagBot configuration

view details

push time in 22 days

issue commenttkluck/StatProfilerHTML.jl

StatProfileHTML forces downgrade to DataStructures@v0.17.20

Thanks for noticing @gsoleilhac . This should be resolved by HAML v0.3.5.

petvana

comment created time in 23 days

CommitCommentEvent

created tagtkluck/HAML.jl

tagv0.3.4

HTML Abstract Markup Language for Julia. Inspired by Ruby's HAML.

created time in 23 days

push eventtkluck/HAML.jl

Timo Kluck

commit sha aef838ee85b8427a6f2e9e1335bed53314335d69

Fix deprecated kwargs use (julia 1.7)

view details

Timo Kluck

commit sha 0900c7abf73d14d63d20580efd5ad81132d88c1c

Bump compatibility for DataStructures

view details

Timo Kluck

commit sha 179911da6e2e5c754de6e46a64e8cc0194f67b6a

Version bump: 0.3.5

view details

push time in 23 days

create barnchtkluck/HAML.jl

branch : release-0.3

created branch time in 23 days

issue closedtkluck/StatProfilerHTML.jl

Long File Names

Using Julia 1.7.1 and StatProfilerHTML 1.3 1.1, but the same problem occus on 1.3, I get the following error after running either statprofilehtml on the output from Profile.@profile or @profilehtml:

ERROR: SystemError: opening file "/Users/willtebbutt/ml/downscaling-gcm-combinations/environments/hadiod/statprof/gaussian_process_probabilistic_programme.jl-L1VzZXJzL3dpbGx0ZWJidXR0L21sL2Rvd25zY2FsaW5nLWdjbS1jb21iaW5hdGlvbnMvZW52aXJvbm1lbnRzL2hhZGlvZC9kZXYvSW5maW5pdGVMaW5lYXJNaXhpbmdNb2RlbHMvZGV2L1N0aGVuby9zcmMvZ2F1c3NpYW5fcHJvY2Vzc19wcm9iYWJpbGlzdGljX3Byb2dyYW1tZS5qbA==.html": File name too long
Stacktrace:
  [1] systemerror(p::String, errno::Int32; extrainfo::Nothing)
    @ Base ./error.jl:174
  [2] #systemerror#68
    @ ./error.jl:173 [inlined]
  [3] systemerror
    @ ./error.jl:173 [inlined]
  [4] open(fname::String; lock::Bool, read::Nothing, write::Nothing, create::Nothing, truncate::Bool, append::Nothing)
    @ Base ./iostream.jl:293
  [5] open(fname::String, mode::String; lock::Bool)
    @ Base ./iostream.jl:355
  [6] open(fname::String, mode::String)
    @ Base ./iostream.jl:355
  [7] open(::StatProfilerHTML.HTML.var"#99#105"{StatProfilerHTML.Reports.Report, Symbol, Vector{Tuple{LineNumberNode, String}}}, ::String, ::Vararg{String}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Base ./io.jl:328
  [8] open(::Function, ::String, ::String)
    @ Base ./io.jl:328
  [9] output(r::StatProfilerHTML.Reports.Report, path::String)
    @ StatProfilerHTML.HTML ~/.julia/packages/StatProfilerHTML/BuyY0/src/HTML.jl:68
 [10] statprofilehtml(data::Vector{UInt64}, litrace::Dict{UInt64, Vector{Base.StackTraces.StackFrame}}; from_c::Bool)
    @ StatProfilerHTML ~/.julia/packages/StatProfilerHTML/BuyY0/src/StatProfilerHTML.jl:23
 [11] statprofilehtml (repeats 3 times)
    @ ~/.julia/packages/StatProfilerHTML/BuyY0/src/StatProfilerHTML.jl:17 [inlined]
 [12] macro expansion
    @ ~/.julia/packages/StatProfilerHTML/BuyY0/src/StatProfilerHTML.jl:37 [inlined]
 [13] optimise_alt_approx(<really_long_type>)
    @ Main ./REPL[56]:45
 [14] top-level scope
    @ REPL[88]:1

Is there a good way to avoid this problem?

closed time in 23 days

willtebbutt

issue commenttkluck/StatProfilerHTML.jl

Long File Names

This should be fixed in 1.4, which releases soon (https://github.com/JuliaRegistries/General/pull/51302).

willtebbutt

comment created time in 23 days

CommitCommentEvent

create barnchtkluck/StatProfilerHTML.jl

branch : release-1.4

created branch time in 23 days

push eventtkluck/StatProfilerHTML.jl

Timo Kluck

commit sha 50ae818718bf6bb5e271fa59ba747d29dd340afc

Be more mindful of output file name lengths This makes the following two changes: - open files for writing by their relative path, which will often be shorter than the absolute path (and in any case the user has more control over any path length issues if they have the option to either expand it or not _before_ calling `statprofhtml()`) - Put a cap on the output file name lengths by using a hash instead of an encoding. This means we have to use bytes2hex rather than base64 because `/` is a valid base64 character. (This was already a bug before, but I probably never ran into it because encoding only paths never results in a `/`.)

view details

push time in 23 days

issue commenttkluck/StatProfilerHTML.jl

Long File Names

Thanks for the report, @willtebbutt . What's happening here is that StatProfilerHTML generates an output filename from a source file's basename and the encoded full path: https://github.com/tkluck/StatProfilerHTML.jl/blob/master/src/HTML.jl#L22. I didn't want to have to reproduce a full /home/.... or /usr/... as some subdirectories of the statprof directory, so I ended up using a flat directory structure and using the base64 encoding to avoid name clashes. This causes the problem you're seeing, because the path can be of arbitrary length but obviously the file name has a limit.

An easy way to solve it is to just use a hash instead of an encoding. I'll publish a fix.

willtebbutt

comment created time in 23 days

issue closedtkluck/StatProfilerHTML.jl

Customisable output location?

It would be nice to be able to (optionally) specify the output directory name that statprofilehtml() uses.

Use case: I'm writing an MPI-parallel code. I'd like to be able to write the profile from each process to a separate directory.

closed time in 2 months

johnomotani

issue commenttkluck/StatProfilerHTML.jl

Customisable output location?

Thanks for the suggestion. It was easy to add and the new version 1.3 adds this feature: https://github.com/tkluck/StatProfilerHTML.jl/commit/3af6779d66bac359a70debfede96b134e4699099

johnomotani

comment created time in 2 months

CommitCommentEvent

push eventtkluck/StatProfilerHTML.jl

Timo Kluck

commit sha 3af6779d66bac359a70debfede96b134e4699099

Bump version 1.3.0

view details

push time in 2 months

push eventtkluck/StatProfilerHTML.jl

Timo Kluck

commit sha 8ba52cdca60740ff0ab3d730279620eca6078741

Add support for specifying the output directory

view details

push time in 2 months

create barnchtkluck/StatProfilerHTML.jl

branch : release-1.3

created branch time in 2 months

more