Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Calling multi arity fns seems to degrade performance. #529

Open

Description

Here is a basic example:

(ns bad.performance.test
 (:require [pixie.time :as time]))
(println "No issue")
(dotimes [i 10]
 (t/time (reduce (fn ([_ _] nil)) nil (range 10000000))))
(println "Multi-arity issue")
(dotimes [i 10]
 (t/time (reduce (fn ([_ _] nil) ([_])) nil (range 10000000)))) 

The output is below:

"Elapsed time: 36.200522 ms"
"Elapsed time: 28.493774 ms"
"Elapsed time: 32.007228 ms"
"Elapsed time: 32.310871 ms"
"Elapsed time: 31.159702 ms"
"Elapsed time: 30.122666 ms"
"Elapsed time: 27.858281 ms"
"Elapsed time: 27.836514 ms"
"Elapsed time: 29.166467 ms"
"Elapsed time: 29.809780 ms"
Multi-arity issue
"Elapsed time: 255.087997 ms"
"Elapsed time: 294.007728 ms"
"Elapsed time: 336.469480 ms"
"Elapsed time: 369.489639 ms"
"Elapsed time: 433.686057 ms"
"Elapsed time: 539.577651 ms"
"Elapsed time: 654.685995 ms"
"Elapsed time: 776.953019 ms"
"Elapsed time: 1090.215928 ms"
"Elapsed time: 835.943882 ms"

The performance seems to constantly degrade when a multi-arity fn is used.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /