我想可能与以前的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例?
>这究竟是如何工作的?