文档章节

判断一个对象是否存在, 谁更快?

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 175
阅读 8
收藏 0
判断一个对象是否存在(赋值)的三种办法如下:
if obj <> nil then ...
if Boolean(obj) then ...
if Assigned(obj) then ...

通过下面的测试, 结论是 obj <> nil 最慢; Boolean(obj) 与 Assigned(btn) 相当!

测试图:



测试源码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  btn: TButton;
  n: Cardinal;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  n := GetTickCount;
  for i := 0 to 100000000 do if btn <> nil then ;
  n := GetTickCount - n;
  Text := IntToStr(n);

  n := GetTickCount;
  for i := 0 to 100000000 do if Boolean(btn) then ;
  n := GetTickCount - n;
  Text := Text + ' - ' + IntToStr(n);

  n := GetTickCount;
  for i := 0 to 100000000 do if Assigned(btn) then ;
  n := GetTickCount - n;
  Text := Text + ' - ' + IntToStr(n);
end;

end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/03/12/1101470.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
C# GetHashCode、Equals函数和键值对集合的关系

C# GetHashCode、Equals函数和键值对集合的关系 说明 HashCode:Hash码。 特性:两个值,相同的的值生成的Hash肯定相同,但是不同的值生成的Hash很大程序上会不同。 作用:求Hash值效率比引用...

GetPower
2018/09/18
0
0
JS中最简单且最强大的数组去重

数组去重的机制中必须要有2次循环,但,这并不意味着必须要有若干for循环的显性代码,通过数组的自身的方法,可以大大简化代码;下面就是我写的最简单且最强大的数组去重方法: 目录 一、最简...

科研者
2018/03/20
0
0
逐行阅读redux源码(二)combineReducers

前情提要 逐行阅读redux源码(一)createStore 认识reducers 在我们开始学习源码之前,我们不妨先来看看何谓reducers: 如图所见,我们可以明白, 是用来对初始的状态树进行一些处理从而获得...

santree
2018/11/14
0
0
php性能优化:使用 isset()判断字符串长度速度比strlen()更快

php中如何判断字符串的长度?很多人第一想到的应该就是 strlen() mb_strlen() 这些函数了。但是从程序性能上来讲,这两个函数在判断字符串长度的过程中都不是最佳的,虽然他们是专业级的检测...

微信迷
2014/02/27
0
0
JavaScript中判断对象是否存在的若干方法

JavaScript中判断对象是否存在有若干总方法,在讲这些方法之前先明确三个概念 (1)JavaScript是“先解析,后运行”,在解析的过程中就完成了变量的声明 (2)JavaScript中,undefined == null (...

Gong_Chen
2016/03/18
11
0

没有更多内容

加载失败,请刷新页面

加载更多

tac 与cat

tac从后往前看文件,结合grep使用

writeademo
今天
3
0
表单中readonly和dsabled的区别

这两种写法都会使显示出来的文本框不能输入文字, 但disabled会使文本框变灰,而且通过通过表单提交时,获取不到文本框中的value值(如果有的话), 而readonly只是使文本框不能输入,外观没...

少年已不再年少
今天
2
0
SpringBoot上传图片操作

首先有个上传文件的工具类 /** * 文件上传 * @param file * @param filePath * @param fileName * @throws Exception */public static void uploadFile(byte[] file, String ...

_liucui_
今天
6
0
DrawerLayout

public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener,OnFragmentInteractionListener{ public NavigationView navView; ......

安卓工程师王恒
今天
2
0
python精简笔记

python精简笔记-字符串基本用法 字符串常见用法: * encode() # 编码成bytes类型 * find() # 查找子串 * index() # 获取下标 * replace() # 替换子串 * len(string) # 返回字符串长度,...

平头哥-Enjoystudy
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部