[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

Measure execution cycles of a code..

Posted on 2000-03-10
7
Medium Priority
?
372 Views
Last Modified: 2013-11-15
I am now writing a code in C.
I want to measure execution speed of a code for as high resolution as possible.
I've tried to read PC timer (mc146818) datasheet, its registers can only give 1 second resolution.
Interrupt 1A can only gives 1/100 second resolution.
If it is possible, I want to get the result as a number of clock cycles.
Anybody can point me out about this?

Thanks,
0
Comment
Question by:wayud
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 11

Expert Comment

by:alexo
ID: 2604570
If you program under windows, check the following functions:
  QueryPerformanceCounter()
  QueryPerformanceFrequency()

0
 
LVL 11

Accepted Solution

by:
alexo earned 400 total points
ID: 2604604
Otherwise, there are pentium-specific instructions that you may use to get high resolution timing.
Check RDTSC
0
 
LVL 3

Expert Comment

by:3rsrichard
ID: 2604729
I can suggest two possible solutions
1) If you can run your program on a machine using Windows NT you can use the Administrative Tools - Performance Monitor to get something related to what you want.

The problem with trying to use the hardware timers is that the answer you get will be based on a specific set of hardware.  Another approach is to compile the code, get a listing, and count the number of instructions being executed.  Or if you have a debugger which keeps track of the number of lines executed that would do it.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 31

Expert Comment

by:Zoppo
ID: 2604951
Hi wayud,

Have you tried 'clock'? It's resolution seems to be at least 20ms. Use it like this:

#include <time.h>

clock_t end, start = clock();
// do lengthy processing
end = clock();

hope that helps,

ZOPPO
0
 
LVL 5

Expert Comment

by:Wyn
ID: 2605210
->If you program under windows, check the following functions:
  QueryPerformanceCounter()
  QueryPerformanceFrequency()
=================================
Fully agree.
0
 
LVL 32

Expert Comment

by:jhance
ID: 2605249
Another approach is to run the instructions in question 10, 100, 1000, etc. times (whatever is needed to get a meaningful result with the timer available) and then scale the result.
0
 

Author Comment

by:wayud
ID: 2606973
Thank you for all of you..
This is what I really need.
I'll try it now.
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Examines three attack vectors, specifically, the different types of malware used in malicious attacks, web application attacks, and finally, network based attacks.  Concludes by examining the means of securing and protecting critical systems and inf…
The main intent of this article is to make you aware of ‘Exchange fail to mount’ error, its effects, causes, and solution.
This video demonstrates how to use each tool, their shortcuts, where and when to use them, and how to use the keyboard to improve workflow.
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question