?
Solved

Why is my app running slowly?

Posted on 2002-05-01
13
Medium Priority
?
140 Views
Last Modified: 2010-04-04
I built a custom database using DBASE V tables in Delphi.

When running on my computer, I search through 14000 plus records in a matter of around 3 seconds.

When on my customer's PC (which is 50mhz faster than mine), It takes around 30 to 40 seconds to search for the same records.

Both Laptops have 256 megabytes of RAM.

Any Ideas?????
0
Comment
Question by:accurates
[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
13 Comments
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 6984931
umm... did you index the tables?
0
 

Expert Comment

by:lottol
ID: 6985111
Seems it's problem with BDE configuration
0
 

Author Comment

by:accurates
ID: 6985124
The BDE Configuration is the same on both computers.

The tables all have multiple indexes.
0
Independent Software Vendors: 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 44

Expert Comment

by:CrazyOne
ID: 6985286
What OS is on the customer's machine? If the OS is Win9x or ME then it could be an issue of System Resources, which is to say they may have too many programs running at the same time causing the System Resources to run quite low. In the case of System Resources the amount of RAM won't matter. Even if the System Resource percentage is not the problem the customer could still have a lot memory hungry programs running and the swap file is being used which would dramatically slow down things. Have them close down most of the programs they are running and see if this helps speed up things for you program.

Is the CPU on the customer's mahcine a Celeron?

Basically look for what is different from your machine and the customer's mahine. This might tell what the problem is.


The Crazy One
0
 

Author Comment

by:accurates
ID: 6985295
The processor is a Pentium III same as mine (700mhz & 750mhz)

The operating systems are both Windows XP Pro.
0
 
LVL 9

Expert Comment

by:ITugay
ID: 6985490
Hi accurates,

try to run different task instead of your application, may be it will be slow again. I mean that problem may be not in your app but in computers configuration. Something like realtime antivirus or something else.

-----
Igor
0
 
LVL 2

Expert Comment

by:freshman3k
ID: 6989265
Hello,

Make sure you use FindKey instead of Locate(if your using this search) . FindKey will utilize the indexes for faster search , while Locate will not.

Delphi Help has code snippets on how to use FindKey.

0
 
LVL 2

Accepted Solution

by:
mikepj earned 400 total points
ID: 7002850
The problem is that new laptops running W2K, XP, and I think ME judge how much work the computer is doing and scale down CPU speed.

I discovered this accidently with some hardware I have trouble communicating with.  I haven't found out what it is yet because I don't have a laptop of this kind which I can play with.

Part of the trouble seems to be Intel SpeedStep technology.  On one machine disabling Intel SpeedStep fixed it but this was not helpful on any of the other machines.

I've seen CPU speed on 800 MHz machines reported as low as 10 MHz by the routine below.  I have used this routine for years and it read perfectly until I discoveered this problem.

I think you'll find that this is the case.  I haven't found a way to fix it yet.  Please advise if you find a solution!

Thanks,
MP

program CPUSpeed;

uses
  Windows, SysUtils;

{$R *.RES}

function CPUSpd: String;
const
  DelayTime = 500; // measure time in ms
var
  TimerHi, TimerLo: DWORD;
  PriorityClass, Priority: Integer;
begin
     PriorityClass :=GetPriorityClass(GetCurrentProcess);
     Priority := GetThreadPriority(GetCurrentThread);
     SetPriorityClass(GetCurrentProcess,REALTIME_PRIORITY_CLASS);
     SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL);

     Sleep(10);

     asm
        dw 310Fh // rdtsc
        mov TimerLo, eax
        mov TimerHi, edx
     end;

     Sleep(DelayTime);

     asm
        dw 310Fh // rdtsc
        sub eax, TimerLo
        sbb edx, TimerHi
        mov TimerLo, eax
        mov TimerHi, edx
     end;

     SetThreadPriority(GetCurrentThread, Priority);
     SetPriorityClass(GetCurrentProcess, PriorityClass);


     Result := IntToStr(Round(TimerLo / (1000.0 * DelayTime)));
end;

var
  S:String;
begin
  S:='CPU speed is '+CPUSpd+' MHz';
  MessageBox(0,PChar(S),'CPU Speed Check',MB_IconInformation+MB_OK);
    end;
end.
0
 

Author Comment

by:accurates
ID: 7007059
Thanks Mike, I belive you helped me solve it.
0
 
LVL 2

Expert Comment

by:mikepj
ID: 7007072
What was the answer?  I have remotely diagnosed this problem and have never had the luxery of personally having such a laptop at hand.

Thanks!
MP
0
 
LVL 2

Expert Comment

by:mikepj
ID: 7007124
What I mean to say is that I have an outstanding problem with my product which I have not been able to solve because I can't personally interact with any of the problem machines since they are spread around the world...

Knowing exactly how you got around it would help me very much because then I can e-mail some instructions to these various people for them to try.  Or maybe there is a change I can make in my app to turn the feature off while my app is busy.

Thanks!
MP
0
 

Author Comment

by:accurates
ID: 7007142
Hi Mike,

I disabled the Intel SpeedStep on the laptop and it sped up to what mine was searching at.

It is something to do with the Speed Step applet that was running on the machine, when I disabled it, the program ran like I thought it should.

Thanks again!
0
 
LVL 2

Expert Comment

by:mikepj
ID: 7007207
Thanks for the info!

MP
0

Featured Post

Industry Leaders: 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!

Question has a verified solution.

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

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
Suggested Courses
Course of the Month12 days, 9 hours left to enroll

777 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