首页 > 系统相关 >Lazarus在Win和Linux下的计时

Lazarus在Win和Linux下的计时

时间:2024-08-16 20:15:46浏览次数:7  
标签:示例 tv Win StartCount Elapsed Lazarus StartTime Linux EndTime

一、毫秒级

Linux 平台示例(毫秒)
program HighPrecisionTimer;

{$mode objfpc}{$H+}

uses
BaseUnix, SysUtils,Linux;

var
StartTime, EndTime: TTimeSpec;
Elapsed: Double;
begin
// 获取开始时间
clock_gettime(CLOCK_MONOTONIC, @StartTime);

// 你的代码块
Sleep(1); // 示例延时,替换为你的代码

// 获取结束时间
clock_gettime(CLOCK_MONOTONIC, @EndTime);

// 计算耗时(毫秒)
Elapsed := (EndTime.tv_sec - StartTime.tv_sec) * 1e3 + (EndTime.tv_nsec - StartTime.tv_nsec) / 1e6;
WriteLn('Elapsed time: ', Elapsed:0:3, ' ms');
end.

Windows 平台示例(毫秒)
program HighPrecisionTimerWindows;

{$mode objfpc}{$H+}

uses
Windows, SysUtils;

var
Frequency: Int64;
StartCount, EndCount: Int64;
Elapsed: Double;
begin
QueryPerformanceFrequency(Frequency); // 获取计时器频率
QueryPerformanceCounter(StartCount); // 开始计时

// 你的代码块
Sleep(1); // 示例延时,替换为你的代码

QueryPerformanceCounter(EndCount); // 结束计时

// 计算耗时(毫秒)
Elapsed := (EndCount - StartCount) * 1e3 / Frequency; // 计算耗时(毫秒)
WriteLn('Elapsed time: ', Elapsed:0:3, ' ms');
end.

 

二、微秒级

Linux 平台示例(浮点微秒)
program HighPrecisionTimer;

{$mode objfpc}{$H+}

uses
BaseUnix, SysUtils,Linux;

var
StartTime, EndTime: TTimeSpec;
Elapsed: Double;
begin
// 获取开始时间
clock_gettime(CLOCK_MONOTONIC, @StartTime);

// 你的代码块
Sleep(1); // 示例延时,替换为你的代码

// 获取结束时间
clock_gettime(CLOCK_MONOTONIC, @EndTime);

// 计算耗时(微秒)
Elapsed := (EndTime.tv_sec - StartTime.tv_sec) * 1e6 + (EndTime.tv_nsec - StartTime.tv_nsec) / 1e3;
WriteLn('Elapsed time: ', Elapsed:0:2, ' µs');
end.

Windows 平台示例(浮点微秒)
program HighPrecisionTimerWindows;

{$mode objfpc}{$H+}

uses
Windows, SysUtils;

var
Frequency: Int64;
StartCount, EndCount: Int64;
Elapsed: Double;
begin
QueryPerformanceFrequency(Frequency); // 获取计时器频率
QueryPerformanceCounter(StartCount); // 开始计时

// 你的代码块
Sleep(1); // 示例延时,替换为你的代码

QueryPerformanceCounter(EndCount); // 结束计时

// 计算耗时(微秒)
Elapsed := (EndCount - StartCount) * 1e6 / Frequency; // 计算耗时(微秒)
WriteLn('Elapsed time: ', Elapsed:0:2, ' µs');
end.

标签:示例,tv,Win,StartCount,Elapsed,Lazarus,StartTime,Linux,EndTime
From: https://www.cnblogs.com/jwjss/p/18363573

相关文章

  • Linux 做 SSH 免密连接 Windows 踩坑记录
    做LinuxSSH免密连接Windows10时踩到个坑,按照教程做了以下操作:把Linux上生成的id_rsa.pub复制到了Windows10下的C:/Users/<用户名>/authorized_keys;修改C:\ProgramData\ssh\sshd_config,注释以下两行#MatchGroupadministrators#AuthorizedKeysFile__PR......
  • centos(linux): rpm -V 验证rpm包安装程序的安全
    一,作用rpm-Va:校验所有的RPM软件包,通常用来检查系统文件是否被植入后门或rootkit二,例子#-V:校验软件包,此校验功能可以用来确认文件是否被修改或覆盖#-a: RPM校验系统中所有已安装的软件包[root@blog~]#rpm-Va>rpmva.txt返回结果:[root@blog~]#morerpmva.tx......
  • 嵌入式学习 20(Linux高级编程——文件——misc)
     文件操作相关函数一、symlink函数intsymlink(constchar*oldpath,constchar*newpath);功能:创建一个指向oldpath文件的新的符号链接(软链接)文件。参数:•oldpath:被链接指向的原始文件的路径。•newpath:新创建的符号链接文件的路径。返回值:•成功时,返回0。......
  • Linux线程实用场景
    文章目录前言生产者消费者模型1.基于阻塞队列特点实现使用2.基于环形队列和信号量实现使用读者写者模型实现思想线程池实现前言    生产者消费者模型和读者写者模型这些模型是用于在线程间协调和管理资源访问的模式,我们在之前已经理解了线程的概念以及同......
  • utilman.exe 是 Windows 操作系统中的一个系统工具程序,全称为 Utility Manager。它的
    utilman.exe(实用工具管理器)在Windows系统中主要用于启动辅助功能工具,但它也曾经被发现存在一些安全漏洞。这些漏洞通常利用utilman.exe的特性进行权限提升或绕过安全机制。以下是一些已知的与utilman.exe相关的公开漏洞:1. CVE-2019-0708(BlueKeep)描述:这个漏洞影响了......
  • Ettercap 是一个用于网络嗅探和中间人攻击的开源工具,主要用于网络安全测试和分析。它
    Ettercap是一个用于网络嗅探和中间人攻击的开源工具,主要用于网络安全测试和分析。它支持多种平台,包括Linux、Windows和macOS。Ettercap可以用来监视、分析、和修改网络流量,通常用于测试和审计网络的安全性。以下是Ettercap的一些主要功能和特点:主要功能嗅探和分析网络......
  • MNN框架在windows上的部署
    一、MNN.lib文件等的生成算是第一次接触MNN框架部署这部分内容吧,对整个流程都不是很理解,故先从官方文档入手先从github下载官方的项目,地址为:https://github.com/alibaba/MNN使用visualstudio的powershell打开,执行官网给出的指令cdpath/to/MNNpowershell./schema/generat......
  • linux驱动总结
    一.前言做linux开发也有一段时间了,对整个系统已经熟悉了很多,linux是一个非常大的系统,现在对常见的驱动做一个总结,以此来加深记忆和理解。二.常见驱动及其子系统分类1.Linux设备分类linux系统抽象出的设备可以分为三类:char_dev,block_dev,net_dev。字符设备是产品开发用的最多......
  • 实现Windows之间(win10)的桌面连接的三步走方法
    实现Windows之间(win10)的远程桌面连接的三步走方法‍目录‍目录实现Windows之间(win10)的远程桌面连接的三步走方法目录环境step1:打开两台Windows电脑的远程桌面连接step2:运行窗口输入mstsc​命令后,打开远程桌面连接窗口step3:输入目标计算机的IP地址后,再输入对应的用户名和密码......
  • Windows操作系统远程桌面端口修改脚本
    change_rdsport_CN.bat:@echooffcolorf0echo修改远程桌面3389端口(支持Windows2003,2008,2008R2,2012,2012R2,7,8,10)echo自动添加防火墙规则set/pc=请输入新的端口:if"%c%"==""gotoend:editnetshadvfirewallfirewalladdrulename="RemotePortNum......