Hi,
I tested rs274 in batch mode and performance is absolutely poor, when using it
as a filter, which is default for unix programs.
I found out, that readline - the slowest known unix program - causes that lag.
When using rs274 as filter, you don't need any of the features of readline, so
I did some research and got these changes:
first src/emc/sai/driver.cc
----------------
--- driver.cc 2020-05-03 06:20:08.751086314 +0200
+++ driver.cc.new 2020-06-06 20:06:50.397288147 +0200
@@ -677,11 +677,14 @@
interp_set_loglevel(log_level);
- if (argc == 1)
+ if (argc == 1 && !go_flag)
status = interpret_from_keyboard(block_delete, print_stack);
else /* if (argc == 2 or argc == 3) */
{
- status = interp_open(argv[1]);
+ // in batch-mode without input filename we use stdin as inpt file
+ // but use interp_open so just signal, that there is no filename ...
+ if (argc == 1 && go_flag) status = interp_open(NULL);
+ else status = interp_open(argv[1]);
if (status != INTERP_OK) /* do not need to close since not open */
{
report_error(status, print_stack);
----------------
and next file src/emc/rs274ngc/rs274ngc_pre.cc
----------------
--- rs274ngc_pre.cc 2020-06-06 20:26:01.746496497 +0200
+++ rs274ngc_pre.cc.new 2020-06-06 20:22:49.639600731 +0200
@@ -252,7 +252,7 @@
}
if (_setup.file_pointer != NULL) {
- if (_setup.file_pointer != stdin) fclose(_setup.file_pointer);
+ fclose(_setup.file_pointer);
_setup.file_pointer = NULL;
_setup.percent_flag = false;
}
@@ -1408,12 +1408,8 @@
_setup.lazy_closing = 0;
}
CHKS((_setup.file_pointer != NULL), NCE_A_FILE_IS_ALREADY_OPEN);
-
- if (filename == NULL) _setup.file_pointer = stdin;
- else {
- CHKS((strlen(filename) > (LINELEN - 1)), NCE_FILE_NAME_TOO_LONG);
- _setup.file_pointer = fopen(filename, "r");
- }
+ CHKS((strlen(filename) > (LINELEN - 1)), NCE_FILE_NAME_TOO_LONG);
+ _setup.file_pointer = fopen(filename, "r");
CHKS((_setup.file_pointer == NULL), NCE_UNABLE_TO_OPEN_FILE, filename);
line = _setup.linetext;
for (index = -1; index == -1;) { /* skip blank lines */
----------------
difference of old and new version, called like this:
time rs274 -t ~/linuxcnc/configs/FM45/tool.tbl -v
~/linuxcnc/configs/FM45/
linuxcnc.var -i ~/linuxcnc/configs/FM45/AFM45.ini -g < 3D_Chips.ngc >
3D_Chips.test.out
current version from master:
real 0m20,118s
user 0m19,530s
sys 0m0,523s
improved variant:
real 0m0,186s
user 0m0,095s
sys 0m0,087s
Hope you find it useful.
cheers Reinhard
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers