为什么在clojurescript中使用nth会使我的代码大小增加74026%

Why does using nth in clojurescript increase my codesize by 74026%

本文关键字:代码 74026% 增加 我的 nth clojurescript 为什么      更新时间:2024-02-14

我一直在比较clojurescript中各种调用输出的生成javascript,感觉就像踩在地雷上。有些生成可读性极高的javascript(即使是在缩小的高级模式下),有些则决定这一方法调用将需要clojure中似乎所有可能的方法才能运行。

第n对第aget就是一个很好的例子。这两个代码段都输出数字5,但其中一个需要77字节,另一个需要57千字节。增加了74026%

57千字节-第n个

(ns fooModule)
(let [log js/console.log
    x (array 5)]
    (log (nth x 0)))

77字节-年龄

(ns fooModule)
(let [log js/console.log
    x (array 5)]
    (log (aget x 0)))

aget生成的代码可读性很强。(手工输入格式)

;(function(){
    var a=console.log,
        b=[5];
    a.a ? a.a(b[0]) : a.call( null, b[0] );
})();

在要点中生成的第n个代码https://gist.github.com/trashhalo/7781298''

clojudescript 0.0-2014

在这种情况下,这是由于死代码消除与ClojureCrip的序列交互。您的示例恰好使用了一个东西,它使用序列nth,而不使用其他东西。因此,在第一个例子中,seq库被删除,而在第二个例子中则没有 不要推广这种增长率,ClojureScript的总量只有那么多,所以一旦你使用了任何包含它的代码,你就会象征性地踩下所有的地雷。