gpt4 book ai didi

javascript - 执行此操作的最快方法?三元运算符?转变?大批?

转载 作者:行者123 更新时间:2023-11-30 18:39:05 32 4
gpt4 key购买 nike

执行此操作的最快方法是什么?左边括号中的变量返回 bool 值,它们表示窗口大小范围。 (例如,o1281 为 1281 及以上屏幕返回 trueo1025 为 1025 及以上屏幕返回 true,等等。)

markup = // ternary triangle (the rows set the markup priority at each band)
( o1281 ) ? r1281 || r1025 || r961 || r641 || r481 || r320 || r0 || omarkup:
( o1025 ) ? r1025 || r961 || r641 || r481 || r320 || r0 || omarkup:
( o961 ) ? r961 || r641 || r481 || r320 || r0 || omarkup:
( o641 ) ? r641 || r481 || r320 || r0 || omarkup:
( o481 ) ? r481 || r320 || r0 || omarkup:
( o320 ) ? r320 || r0 || omarkup:
( o0 ) ? r0 || omarkup:
omarkup;

我在想也许可以根据中间 (o641) 条件将它分成 2 个范围。

值得吗?

最佳答案

好吧,你正在做的是寻找第一个以降序排列的真实 o 值,一旦你找到一个,你正在寻找第一个名为 <= 的真实 r 值。这个o值。找不到,您希望返回值 omarkup .

因为您只有几个 o 值和 r 值,所以您的代码尽管可能很“有趣”,但似乎使测试数量最少。

我看不出开关或散列有何帮助,因为您似乎确实在按降序搜索第一个真实值……因此,我也不明白为什么拆分会有助于提高性能。保持原样,或者,如果您更喜欢可读性(正如许多程序员所做的那样),请创建对象,其中 1281、1025 等是字段

此外,担心性能通常是人们在面对将执行很多次的操作时所做的事情。这是这里的情况吗?假设 o 和 r 值不变,这看起来像是您只会执行一次的操作。 (仅供引用。)

附录

根据添加到上述问题的评论,它看起来像是您想要多次执行的操作。在这种情况下,尽管现代编译器非常好,但在 JavaScript 级别进行 self 优化可能没问题。从代码审查的 Angular 来看,最大的担忧是值 1281、1025、961、941 等是手动布局的并且是源代码的一部分,因此维护(例如在此处添加新的大小值)是,好吧,棘手且容易出错。就是说,根据您所展示的内容,我认为可以肯定地说您编写的 JavaScript 是给定天真的编译器的最佳可获得性。您始终可以寻找一个只定义一次这些值的实现,然后对其进行分析以查看它是否“足够快”。例如,您可以定义一个数组,例如

var sizes = [1281,1025,961,641,481,320,0] 

并循环,但是,是的,在这样的实现中有开销。

这里可能对您有帮助的一个问题是仔细考虑什么可以缓存,什么不能缓存。这有助于加快此代码的 future 执行速度。

关于javascript - 执行此操作的最快方法?三元运算符?转变?大批?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7382291/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com