文档章节

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

涂孟超
 涂孟超
发布于 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
09/18
0
0
JS中最简单且最强大的数组去重

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

科研者
03/20
0
0
php性能优化:使用 isset()判断字符串长度速度比strlen()更快

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

微信迷
2014/02/27
0
0
《HTTP权威指南》– 7.缓存

使用缓存的优点: 减少了数据的数据传输,节省了网络费用; 缓解了网络瓶颈的问题,不需要更多的带宽就能更快地加载页面; 降低了原始服务器的要求,服务器可以更快地响应、避免过载出现; ...

dfatxm
2016/12/06
1
0
逐行阅读redux源码(二)combineReducers

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

santree
11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据集可视化---张量场的可视表示

中国龙-扬科
26分钟前
1
0
JavaScript创建对象方法实例小结

本文实例讲述了JavaScript创建对象方法。分享给大家供大家参考,具体如下: 最简单的方式就是创建一个Object对象,并为其添加属性和方法。 //示例代码var person=new Object()person.name=...

peakedness丶
28分钟前
1
0
GO 读写锁实现原理剖析

前言 TODO:简单说明读写锁用法及规则。 读写锁数据结构 类型定义 TODO: 源码中数据结构 TODO:讲解每个成员作用 接口定义 获取写锁 释放写锁 获取读锁 释放读锁 场景分析 写锁阻止写锁 TODO...

恋恋美食
32分钟前
2
0
Java核心(二)深入理解线程池ThreadPool

本文你将获得以下信息: 线程池源码解读 线程池执行流程分析 带返回值的线程池实现 延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高...

王磊的博客
33分钟前
3
0
web项目中的乱码问题原理分析

Java web开发过程经常遇到乱码,本篇我们探讨一下乱码产生的原因与解决思路。 一次完整的Web请求会有4次编解码转换,如下所示。 第一次:客户端(通常为浏览器)将字符转换成TCP字节流发向服...

fame_yao
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部