Paste in TCC/TCMD window is very slow [v20.0.22]

Aug 17, 2013
21
0
When I paste text to a TCC or TCMD window it takes a long time to print the text in the window.

For example, if I paste a line that is 200 characters long in a TCC window, then it takes close to one second to print the text. This is without any of my custom aliases (no tcstart.bat file) or settings (using a default TCMD.INI file).

The behavior is the same in a TCMD window, except that in this case the printing gets even slower when the line starts with spaces. For example, if I paste in a line that contains 200 spaces it takes (I kid you not!) 19 seconds to print the text.

It would be great if the performance for pasting text in TCC/TCMD would be similar to that in CMD (where it is close to instantaneous).

(This is a regression from TCMD v19, but here also the printing is much slower than in CMD.)
 
Aug 17, 2013
21
0
The behavior is the same if I paste by pressing the middle mouse button (wheel), or right click in the window and select "Paste".
 

Charles Dye

Super Moderator
Staff member
May 20, 2008
4,223
78
Albuquerque, NM
prospero.unm.edu
The behavior is the same if I paste by pressing the middle mouse button (wheel), or right click in the window and select "Paste".
As far as I know, those two are the same mechanism. But I do see a difference in performance between using the right-click menu, and using Control-V. Nothing remotely like 19 seconds -- pasting in your paragraph starting "For example, if I paste..." takes maybe a second and a half via the right-click menu. But it is noticably slower than Ctrl-V.
 
May 20, 2008
10,634
82
Syracuse, NY, USA
It's similar here. In a v20 console, Ctrl-V is nice and fast, while an r-click and ControlMenu\Edit\Paste are very slow, much slower than my repeat rate (which is at its max) and getting even slower as the command line gets longer (pasting at the end of the command line). With ~800 characters already on the command line, those last two methods take over 10 seconds to paste 100 characters (Ctrl-V remains almost instantaneous). The effect is greatly exaggerated if I paste near the beginning of a long command line.

Earlier versions of TCC (v20 and v16) do not exhibit this behavior.
 

Charles Dye

Super Moderator
Staff member
May 20, 2008
4,223
78
Albuquerque, NM
prospero.unm.edu
Be aware that Take Command may or may not intercept Control-V; ditto Shift-Ins. You can configure them:
Customize / More Commands... / Keyboard; change the "Category" dropdown to "Edit"; and select "Paste".
(By "Customize" I mean that down-pointing doohickey on the title bar, just to the right of the "Find" icon.)
 
Jan 12, 2014
399
7
Switzerland, SO
That's right. Here only Shift+Ins is set by TC which is default.

If I set the Ctrl+V too for Paste, it's slow too.

So it seems indeed: if it's intercepted through TC it's slow.

Thank you, Charles!
 

rconn

Administrator
Staff member
May 14, 2008
11,926
133
There are several factors at play here.

First, if you're using Windows 10, then (by default) TCC never even sees the ^V; it's being handled by conhost and the slow paste behavior is Microsoft's doing. You can override this by clicking on the console icon on the title bar, selecting "Options", and then unchecking "Enable Ctrl key shortcuts". Then a ^V in a TCC console window will be essentially instantaneous (other than the time required to actually display the string).

Second, using the quick edit menu or right click in a TCC console window also never passes the paste command to TCC; conhost again feeds the keystrokes (slowly, and one at a time) to TCC. This isn't an issue with CMD, which does line input, but any app (not just TCC) that does character input is going to see slow pastes. Presumably Microsoft decided to put some kind of delay between the keystrokes to avoid overflowing buffers.

Third, if you do a paste in a TCMD tab window, TCMD has to send the clipboard contents one character at a time to the underlying console window keyboard buffer. (There's a bug in Windows 7 & 8 (at least; I haven't tested it in 10) that causes things to break badly if TCMD tries to stuff more than one character at a time into the buffer. That may be why Microsoft decided to do the same in #1 and #2 above.
 
May 20, 2008
10,634
82
Syracuse, NY, USA
I'm using Windows 7. I am not using TCMD. And there's no way I can see a slow paste in a console with any TCC before v20. So something changed ... for the worse.
 

rconn

Administrator
Staff member
May 14, 2008
11,926
133
I'm using Windows 7. I am not using TCMD. And there's no way I can see a slow paste in a console with any TCC before v20. So something changed ... for the worse.
The change was for DBCS support. The API Microsoft recommends using to determine character widths is really, really slow. I can tweak it a bit but it means you won't be able to switch to/from DBCS without restarting.
 
May 20, 2008
10,634
82
Syracuse, NY, USA
The change was for DBCS support. The API Microsoft recommends using to determine character widths is really, really slow. I can tweak it a bit but it means you won't be able to switch to/from DBCS without restarting.
That's fine with me.
 
Aug 17, 2013
21
0
The change was for DBCS support. The API Microsoft recommends using to determine character widths is really, really slow. I can tweak it a bit but it means you won't be able to switch to/from DBCS without restarting.
I am also all fine with this.

The paste performance has improved dramatically with Take Command v20.00.25!

For two different desktops running Windows 10, then pasting in a Take Command window is now close to instantaneous. However, on my Windows 10 laptop there is still something odd going on. After pressing "Run Take Command 20.0" at the end of the installation, then pasting is very fast right after the Take Command window comes up (not quite as fast as on the desktops, but still fast). However, after waiting for a minute or two (not closing the Take Command window or doing anything else), then the pasting is much slower. It then takes about one second to paste a line containing 800 characters (which is annoying).

You can override this by clicking on the console icon on the title bar, selecting "Options", and then unchecking "Enable Ctrl key shortcuts". Then a ^V in a TCC console window will be essentially instantaneous (other than the time required to actually display the string).
I have tried this, but it makes no difference to the paste performance.
 
Last edited: