TCC takes time to show registered to.

Nov 2, 2008
193
1
#1
I have a regestered version of take command (TC 21.00.19 on Win32 v6.10.7601 ("Windows 7")

When I start tcc outside of the take-command window, it takes about four or five seconds to show the regestered-to-Penning banner on startup.

Code:
TCC  21.00.19   Windows 7 [Version 6.1.7601]
Copyright 2017 JP Software Inc.  All Rights Reserved
(pause for 5 seconds, as if checking on the net)
Registered to PENNING

[D:\]
 

rconn

Administrator
Staff member
May 14, 2008
10,614
97
#2
The only thing that's happening there is the license registration check -- and it does not attempt to do any internet access.

Are you saying it doesn't have a delay if run in a tab window? (There is no difference in the code when running in a console vs. running in a tab window.)

Take Command calls the same code at startup to determine its registration status - do you see a delay there?

TCC is accessing a COM dll (IsLicense50.dll) to retrieve the registration info. If you have a previous version of Take Command installed & Windows blocked the v21 installer's attempt to register the new COM dll, you could see some odd results (including TCC attempting again to register the dll).
 
Nov 2, 2008
193
1
#3
If tc.exe is running, it seems to work ok, but starting tcc from a tcc session in tc, or from a session through an apppaths loader (eg write.exe), can bring it on. I unstalled v 20 and that seems to fix it.
 
#4
Using this command
Code:
set zz=%_winticks & start g:\tc21\tcc.exe echo %%@eval[%%_winticks - %%zz]
I can reliably show a significant difference (but nothing like 5 seconds) between starting TCC from a TCC console and starting TCC from TCC in a tab. I did both many times. On the average, I'd see the output in the new instance ...

0.190 seconds later when issued in a TCC console, and
0.690 seconds later when issued in a TCC tab

Apparently, all these are registered:
v:\> regfind islicense | grep -i g:\\.*islicense | g:\gnu\sort -f | uniq
-> Data: G:\TC11\IsLicense40.dll
-> Data: G:\tc13\IsLicense50.dll
-> Data: G:\TC14\IsLicense50.dll
-> Data: G:\tc15\IsLicense50.dll
-> Data: G:\TC16\IsLicense50.dll
-> Data: G:\TC17\IsLicense50.dll
-> Data: G:\tc18\IsLicense50.dll
-> Data: G:\tc19\IsLicense50.dll
-> Data: G:\tc20\IsLicense50.dll
-> Data: G:\tc21\IsLicense50.dll
-> Data: G:\TCC20\IsLicense50.dll
-> Data: G:\TCC21\IsLicense50.dll
 
#5
Here's a more striking difference using transient instances. In the console I issued
Code:
do i=1 to 10 (set zz=%_winticks & start g:\tc21\tcc.exe /c echo %%@eval[%%_winticks -%%zz] ^>> v:\fromconsole.txt & delay 1)
and in a TCMD tab I issued
Code:
do i=1 to 10 (set zz=%_winticks & start g:\tc21\tcc.exe /c echo %%@eval[%%_winticks -%%zz] ^>> v:\fromtab.txt & delay 1)
The results:
Code:
v:\> type fromconsole.txt
94
78
78
78
94
78
94
78
78
78

v:\> type fromtab.txt
406
374
390
390
390
390
390
374
390
390
 

rconn

Administrator
Staff member
May 14, 2008
10,614
97
#6
Using this command
Code:
set zz=%_winticks & start g:\tc21\tcc.exe echo %%@eval[%%_winticks - %%zz]
I can reliably show a significant difference (but nothing like 5 seconds) between starting TCC from a TCC console and starting TCC from TCC in a tab. I did both many times. On the average, I'd see the output in the new instance ...

0.190 seconds later when issued in a TCC console, and
0.690 seconds later when issued in a TCC tab
WAD. Take Command has to do a lot more setup & interprocess communication with a new TCC instance in a tab window.

And it's always been that way.

Apparently, all these are registered:
You're not doing yourself any favors there ...
 

rconn

Administrator
Staff member
May 14, 2008
10,614
97
#8
The new TCC is not in a tab.
That's not what you said in the original post - you said starting TCC in a TCMD tab took longer than starting it in a console window. Are you referring to START'ing a TCC console session from a TCMD tab window?

0.190 seconds later when issued in a TCC console, and
0.690 seconds later when issued in a TCC tab
So, which is it?

p.s.: START from a TCMD tab window is far more complex than START in a TCC console window, and does a lot of IPC with TCMD. I suspect what you're really doing here is measuring START, not TCC.
 
#9
The difference is where I issue the START command. If I issue the START command in a TCC console, it's fast. If I issue the START command in a TCC tab, it's slow. The command itself is the same in both cases And in both cases, it STARTs a TCC in a new console.
 

rconn

Administrator
Staff member
May 14, 2008
10,614
97
#15
Here are the comparisons on my system:

From console window:

47
47
47
47
47
47
47
47
47
47

From TC tab window:

62
62
62
62
62
47
62
62
62
62

All timings done while I was also doing a full backup to a NAS. You might want to check on your plugin loading.

BTW, you had said in a previous thread that you were unconcerned with performance. Has that changed?
 
#16
BTW, you had said in a previous thread that you were unconcerned with performance. Has that changed?
Unconcerned with performance! That doesn't sound at all like me. IIRC, I've been hounding you about TCC's startup time for many years. I'm not personally concerned with TCMD's performance but this investigation was rather fun.

It's the same with no plugins.
Code:
v:\> type fromconsole.txt
93
78
78
78
78
94
78
78
78
78

v:\> type fromtab.txt
405
390
390
390
390
390
390
390
390
390
 

rconn

Administrator
Staff member
May 14, 2008
10,614
97
#17
Unconcerned with performance! That doesn't sound at all like me. IIRC, I've been hounding you about TCC's startup time for many years. I'm not personally concerned with TCMD's performance but this investigation was rather fun.
Hmm -- quoting from vefatica in a previous thread:

The speed at which text appears in the console, or is sent to a file or pipe, has never been a concern of mine.
So, you only care if it loads fast, not if it runs fast? What are you doing with TCC that you only want to load it and not run anything in it?

Potential ways to speed up your system:

Switch to Windows x64 : 30% faster
Add $20 worth of RAM : 20% faster
SSD : >200% faster
CPU built this decade : > 200% faster

I think your speed tests are measuring bottlenecks in your system, and not optimal TCC load times. (Your redirected file I/O time is going to be significant, particularly if you're sending it to a network drive.)

My backup finished, so I tried your test again in a TCMD tab window:

63
38
38
38
47
38
38
38
38
38

This is with a middle-of-the-road I7 cpu and an average SSD. I don't think there's much more I could improve by trying to further optimize TCC load times; I might drop it another three or four ms at best.
 
#19
I just tried it on my work machine (2.13 GHz, vs 2.66 GHz at home). There was no difference at all. Any speculation? If I had an idea what START was doing, I could try tweaking.
Code:
v:\> type fromconsole.txt
109
93
93
93
93
93
93
93
93
93

v:\> type fromtab.txt
109
94
94
94
94
94
94
94
94
94
 
Nov 2, 2008
193
1
#26
It still has not been resolved. It comes in an unreproducable way, but i can count to ten between the second and third line.

The cursor flashed ten times between the copyright and registered lines in the startup. I don't think you can put a batch in there to time it, because i imagine 4start runs after this point.

tc.exe (the gui): i started it from the tcc prompt, and it took a similar time to display its window. I imagine it's checking out islicense50.dll before loading. So it's not entirely in just tcc. Tc seems to have it too.

Other times, as equally random, it starts very fast.
 

rconn

Administrator
Staff member
May 14, 2008
10,614
97
#27
It still has not been resolved. It comes in an unreproducable way, but i can count to ten between the second and third line.
Did you uninstall previous versions of TCMD?

It sounds like TCMD is unable to register IsLicense50.dll (at least in a timely way). Try starting an elevated session, go to the TCMD installation directory, and enter:

regsvr32 IsLicense50.dll

and let me know what it says.
 
Nov 2, 2008
193
1
#29
These three commands are run from a standard-user CMD session.

d:\newin\tcmd21> regsvr32 islicense50.dll
The module IsLicence50 was loaded but the call to DllRegisterServer failed with error code 0x80070005
For more information about this problem, search online using the error code as a search term.

,,> rxregsvr islicense50.dll
DllRegisterServer failed. Error code 0x8007005: Access is denied.

d:\newin\TCMD21>regsvrex IsLicense50.dll
Error occured registering server - Access is denied.

ProcExp from Sysintern could not find IsLicense50.dll loaded.

All three programs (regsvrex, rxregsvr and regsvr32) can load and unload the DLL successfullt from an Administrator cmd session.

dllregsvr.exe had no problems registering it in either environment.

RxRegSvr: replacement for RegSvr32 from www.regxplor.com
regsvrex: Enchanced Server Registration Utility Copyright V. Rama Krishna
dllregsvr: v 1.1 www.chestysoft.com. This is a gui program.

I've just installed 21.00.22, and the same load issues exist.

I'm still having problems eliminating d:\newin\tcmd20 out of registry, it's hanging around in vaults. Here is a query from a slow-starting tcmd 21.00.22 to the registry, and then the same thing from a cmd.exe session, using reg.exe. tcc was started from cmd.exe in the tcmd21 directory.

Code:
d:\newin\TCMD21>echo %@regquery[hklm\software\wendy\folders\takecmd]
d:\newin\tcmd21

d:\newin\TCMD21>exit

d:\newin\TCMD21>reg query hklm\software\wendy\folders /v takecmd

! REG.EXE VERSION 2.0

HKEY_LOCAL_MACHINE\software\wendy\folders
    takecmd     REG_SZ  d:\newin\tcmd20
This is done in a CMD standard user session.

Code:
D:\newin\TCMD21>regsvrex /u IsLicense50.dll
Error occured registering server - Error accessing the OLE registry.

D:\newin\TCMD21>regsvrex /c IsLicense50.dll

D:\newin\TCMD21>regsvrex IsLicense50.dll /u
Error occured registering server - The specified module could not be found.
regsvrex allows loading the DLL in the current user when /c is used. It loaded the server for the current user only.

"tcc /q" does not affect it, nor does putting Copyright=No into %_ininame [4nt]. Both seem to suppress the copyright message. All both of these do is to not display the copyright, so it means that the inifile has been read. But it still pauses for the same while.
 
Last edited:
Nov 2, 2008
193
1
#30
I had a look at the (shareware) version of tcc. It has no problems in the delay of loading.

Spoke too soon. It also has the problem.

I am beginning to suspect that somehow the registry vaults in windows 7 are not updating, because the change i made to hklm\software\wendy\folders are not taking. If this is the case, then there are other things not taking too.
 
Last edited: