德尔福表现:案例与如果

前端之家收集整理的这篇文章主要介绍了德尔福表现:案例与如果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想可能与以前的SO问题有一些重叠,但是我找不到关于这个话题的Delphi具体问题。

假设你想检查一个无符号的32位整数变量“MyAction”是否等于ACTION1,ACTION2,…,ACTIONn中的任何一个,其中n为 – 说为1000。我猜,除了更优雅,

case MyAction of
  ACTION1: {code};
  ACTION2: {code};
  ...
  ACTIONn: {code};
end;

比快得多

if MyAction = ACTION1 then
  // code
else if MyAction = ACTION2 then
  // code
...
else if MyAction = ACTIONn then
  // code;

我猜,如果正确的动作ACTIONi具有较高的i值,那么if变量需要时间O(n)来完成(即找到正确的动作),而case变量需要更少的时间(O(1)?) 。

我正确的说,开关要快得多吗?
我正确的是,在开关案例中找到正确的动作所需的时间实际上与n无关?即是否真的需要检查百万例,而不是检查10例?
>这究竟是如何工作的?

解决方法

>是的,交换机是O(1),而级联if(O)
是的,见(1)
> branch table

猜你在找的Delphi相关文章