|
The Sample Grabber doesn't provide a way to change the video resolution AFAIK.
What are you wanting to do?
Here's some info: Dynamic Format Changes[^]
Mark
Mark Salsbery
Microsoft MVP - Visual C++
"Go that way, really fast. If something gets in your way, turn."
|
|
|
|
|
My project is about getting data from USB port for processing something.
The data is very fast(around 1Mbyte/sec) and I'm not sure my function can process this job in time or not.
I need to check the time in each function.
How can I check it?
|
|
|
|
|
Max++ wrote: I need to check the time in each function.
So just call time() , localtime() , asctime() , gmtime() , etc. I don't see how that is going to address the problem, however.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
All the function above can't use because the minimum time is 1 ms.
but each function take time less than that.
You can try this
<br />
CTime startTime = CTime::GetCurrentTime();
---<br />
---
---<br />
CTime endTime = CTime::GetCurrentTime();
CTimeSpan elapsedTime = endTime - startTime;<br />
CString str = elapsedTime.Format( "%S" );<br />
TRACE("%s\n",str);<br />
the result you will get is always zero.
|
|
|
|
|
Max++ wrote: All the function above can't use because the minimum time is 1 ms.
I'm not sure what you are trying to say here, but since Windows is not a RTOS, the best resolution you can hope for is 15ms.
If you are simply wanting to "time" how long a function takes to execute, can't you just use the profiler?
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I don't know if it is possible for you...but you can create a loop that calls many time the functions ....then it will became easyer to check the time length needed from the functions.
If you loop 1000 times the function operation then you will transorm ms in seconds.
Hope this helps.
Russell
|
|
|
|
|
QueryPerformanceCounter()/QueryPerformanceFrequency() may give you some numbers you can work with.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
"Go that way, really fast. If something gets in your way, turn."
|
|
|
|
|
hey frnd...
What optimization techniques should I use to improve the performance in SDi application.
thnks...
|
|
|
|
|
It really depends on the kind of application your need to develop (i.e. the question is too generic). BTW first think about reliability and then about optimization.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
As another poster wrote stability is the best optimization. It makes live of a programmer easy.
To improve performance you gotta check, whether your program does somethings often. Try to reduce multiple thinks like creating brush or Api-Calls. Better make these values class members or globals.
Check loops carefully!!!
Greetings from Germany
|
|
|
|
|
Use a profiler to show you "where" to optimize.
|
|
|
|
|
Hello,
Could you please recommend some of them?
Thank you.
|
|
|
|
|
Not very well I apologize. It has been years since I have worked on a serious server project. Back then we used one from Intel and another from those guys that did Bounds Checker. I have no current knowledge of the Profiler landscape, we are just using the Visual Studio one because we have it and we rarely use it. We don't want to be hampered by running Profilers because we are an "Agile" operation.
|
|
|
|
|
Do not optimize the code. That's just another way to break the code.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Remember that 90% of bottlenecks are in 10% of the code. Using straight forward C/C++ is actually the best common place optimization since it allows the compiler to do the work. Aside from that, you should get a profile and identify where the bottlenecks are. In some cases, like with hardware access, you can do nothing about performance except upgrade the hardware. In places where you can optimize, I've found that parsing code is a common place to look. Code that uses many small allocations is also a big killer (and problematic in other ways.)
My favorite profile is DevPartner (http://www.compuware.com/products/devpartner/visualc.htm[^]) though it gotten rather expensive as of late.
Added: Building on what John Simmons says--do not optimize code, optimize algorithms. (In other words, no matter how much you try to optimize a bad algorithm, it's still a bad algorithm.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
I come to think of one speed optimisation from my own experience:
Avoid all kinds of (xxx)printf at all cost! Of course including CString.Format, and other functions that use some kind of (xxx)printf.
I once reduced the processing time (for 1000000 iterations) in a loop from 12 seconds to just below 4, simply by replacing one single sprintf() with a number of itoa(), strcat() and similar functions.
Alcohol. The cause of, and the solution to, all of life's problems - Homer Simpson
|
|
|
|
|
Ah memories, I had the exact same experience, also a string object was getting created and initialized to a hard coded value, that was expensive
Usually from my experience the bottleneck problems are in the design!
Also you don't want to create / destroy / initialize a lot of things. If you can cache them or create them once and reuse them that is more ideal. Of course you may still need to reset state variables =) but the cost of creating and destroying an object will have been negated!
If you're optimizing someone else existing code, expect to break it and introduce subtle bugs with the above idea. Chances are you are going to fail to account for properly resetting state variables before reusing one or more object / data structure.
|
|
|
|
|
|
!!!
Yours Truly, The One and Only!
|
|
|
|
|
What is DEP and how to write DEP compatible program?
Amar.
|
|
|
|
|
|
I have a form which is inherited from CDialog.It can be resizing.
Now I want to set its minimum size (300, 200). It couldn't be smaller than (300, 200). How to do it with MFC 6.0.
Thanks in advance.
|
|
|
|
|
Add a message map entry for WM_GETMINMAXINFO and override ...
afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI );
lpMMI->ptMinTrackSize.x = 300
lpMMI->ptMinTrackSize.y = 200;
|
|
|
|
|
Off the top of my head, you should be able to do it by handling WM_GETMINMAXINFO / CWnd::OnGetMinMaxInfo.
Iain.
|
|
|
|
|
Hi,
My application has dependency with lib files.
For db access and other related things there is one lib.
I'm trying to use a retry logic when db connection fails.
The retry logic is implemented in the application.
When a CDBException occurs, it is propagated using throw.
In some functions there is AfxThrowDBException. The problem is in some functions the exception pointer is deleted.
For eg: catch(CDBException* e) {e->Delete();}
So when the throw is propagated, and in the next(need not be immediate outer) catch block if again e is used, i'm getting unhandled exception.
Should I check all the CDBException and remove e? Or is there any other alternative for this?
Thanks and Regards,
sanju.
|
|
|
|