English 中文(简体)
是否在法典中使用双位数来改进业绩?
原标题:Does using binary numbers in code improves performance?

我看到了一些实例,说明在法典中使用双亲编号,例如32,64,128,等等(例如,众所周知的地雷手法)。

我要问,是否使用 Java/C++等高语言的双倍数字帮助什么?

我知道集会,而且你总是会使用这些节目,因为用低语言,如果你超过登记限额,就会克服重复。

如果你使用双位数字,方案会更快/更节省记忆吗?

问题回答

与大多数情况一样,“取决于”。

在汇编的语文中,汇编者越好,有时可以采用不同的更快的机器指示(但只针对特殊价值,例如两种权力)。 有时,法律工作者知道这一点,并据此制定方案。 (例如,用两种力量进行乘数是廉价的)

有时,算法适用于涉及两种权力的表述(例如,许多分立和qu算法,如快速四轮变换或合并)。

Yet other times, it s the most compact way to represent boolean values (like a bitmask).

And on top of that, other times it s more efficiency for memory purposes (typically because it s so fast do to multiply and divide logic with powers of two, the OS/hardware/etc will use cache line / page sizes / etc that are powers of two, so you d do well to have nice power of two sizes for your important data structures).

因此,除了此以外,其他时间,方案制定者也只是利用两个权力,他们只是这样做,因为它似乎像一个冰号。

There are some benefits of using powers of two numbers in your programs. Bitmasks are one application of this, mainly because bitwise operators (&, |, <<, >>, etc) are incredibly fast.

在C++和Java,这是公平的比值,特别是在GUI应用方面。 你们可以有32种不同的菜单(如可再生、可转移、易腐化等),在不必通过合并增加价值的情况下适用每一个选择。

就原始速度或绩效改善而言,这确实取决于申请本身。 全球倡议一揽子方案可以是huge<>m>,这样,在采用菜单/接口办法时,就能够加快速度。

从贵问题的标题来看,它像你所说的那样,“如果你用双手写固定的话,它是否使你的方案更有效率?” 如果是你所说的话,答案是令人振奋的,第1号。 汇编者在汇编时间时将所有你的常数翻译成二字,因此,在方案实施时,不会有变化。 我不知道汇编者是否能够比小数更快地解释双位不变,但差异肯定是微不足道的。

但你提出的问题似乎表明,你指的是,“使用双位数的固定数字”,而不是用双位数表示。

For most purposes, the answer would be no. If, say, the computer has to add two numbers together, adding a number that happens to be a round number in binary is not going to be any faster than adding a not-round number.

It might be slightly faster for multiplication. Some compilers are smart enough to turn multiplication by powers of 2 into a bit shift operation rather than a hardware multiply, and bit shifts are usually faster than multiplies.

回到我的组装语言日 我常常把阵列中的内容放在大小上,这些大小是权力的2个,因此,我可以把排在分数上,但分数不一。 但是,用一种难以做到的高层语言,因为你必须做一些研究,以找到你们的主人记忆中有多少空间,汇编者是否在他们中间添加tes子等。 而且,如果你确实对一个阵列元素添加一些字句,使之达到2强力,那么整个阵列现在就更大了,因此,你可能会造成额外的页码故障,即操作系统没有记忆,必须给硬车写信,然后在需要时重新阅读。 额外的硬性驱动权需要时间超过1,000倍。

在实践中,(a) 差异非常小,几乎永远不会令人担心;(b) 你们通常不了解低级发生的一切,因此经常难以预测,改变意图的影响是否会帮助或伤害。

简言之,Don t bother。 采用问题自然的不变价值。

他们重新使用的理由可能有所不同,例如比特马什。

如果你看到其阵列规模,它实际上并没有提高业绩,但通常由2人的权力分配记忆。 例如,如果你写了<代码>.char x[100],你可能获得128个用泰语分配。

不管你使用什么数量,你们的法典都不相同。

如果按双位数计算,你指的是2人,如2人、4人、8人、16人、1024人。 由于空间的优化,这些空间通常很常见。 举例来说,如果你有8个比点,就能够点到256个(即2个权力),那么,如果你使用不到256个座标,那么你通常会分配256个缓冲点,......这同样是用于所有其他2个左右的力量。

在大多数情况下,答案几乎总是没有,没有明显的业绩差异。

然而,在某些情况下(很少),如果NOT使用双位数进行阵容/结构规模/宽度,就会带来明显的绩效效益。 这些情况是你重新填满海滩,以及你重新 lo住一个填满海滩的结构,使你每次穿过你的阵列/结构时都发生切撞。 这一情况非常罕见,除非你在守则上遇到比理论限制更缓慢的问题,否则不应预先鼓励。 此外,这种情况非常依赖硬件,并将从系统改为系统。





相关问题
Printing several binary data fields from Google DataStore?

I m using Google App Engine and python for a web service. Some of the models (tables) I have in my web service have several binary data fields in them, and I d like to present this data to a computer ...

Handling large ActiveRecord object set as binary data

I have an issue with manipulating large number of record objects of type ActiveRecord model(Records are extracted from a complex operation but from the same table) and I want to pass that object set ...

How to send a push notification using Erlang?

I m trying to send a push notification to APNs using Erlang. This is the code I came up with so far: -module(apnstest2). -export([connect/0]). connect() -> application:start(ssl), ssl:...

What is a suitable buffer for Python s struct module

In Python I m accessing a binary file by reading it into a string and then using struct.unpack(...). Now I want to write to that string using struct.pack_into(...), but I get the error "Cannot use ...

Storing hexadecimal values as binary in MySQL

I was thinking about how I m storing passwords in my database : appropriately salted SHA1 strings in a CHAR(40) field. However, since the character data in there is actually just a hex representation ...

View ram in DOS

Is there a way in dos (im using a dos boot disk on a linux machine) to view portions of ram? ie. some form of command to read the binary at a given address? edit: my bootable floppy doesnt have ...