PR# 18044 Running external commands using Unix implementation of PROCESS library is extremely slow

Problem Report Summary
Submitter: finnianr
Category: Other
Priority: Medium
Date: 2011/12/11
Class: Bug
Severity: Serious
Number: 18044
Release: 7.0.8.8074
Confidential: No
Status: Open
Responsible:
Environment: Ubuntu Linux 10.10 x86_64
Synopsis: Running external commands using Unix implementation of PROCESS library is extremely slow

Description
Hi 
today I tried finalizing a program where I had replaced calls to {EXECUTION_ENVIRONMENT}.system with calls to PROCESS.

I was struck by how slowly the commands seemed to be returning. So I ran a bench mark to compare the old version with the new. Here are the results:

Using PROCESS:
TIME: 0 hrs 1 mins 9 secs 375 ms

Using {EXECUTION_ENVIRONMENT}.system:
TIME: 0 hrs 0 mins 1 secs 439 ms

Something is obviously very wrong with PROCESS but why? My program makes about 60 assorted calls to: lame; cp; mv; rm.

It is a problem for my product if I can't use PROCESS because on Windows the call to {EXECUTION_ENVIRONMENT}.system causes a shell window to briefly pop up. This looks bad to end users and was the main reason I wanted to use the PROCESS library. Also I was expecting a performance boost on some Eiffel classes that wrap the Unix 'find' and Windows 'dir' with a common interface, since it was no longer necessary to pipe the results into a temporary file before reading into Eiffel.

Attached is the abstract class I use for calling PROCESS
To Reproduce

										
Problem Report Interactions
From:finnianr    Date:2011/12/11    Download   
Attachments for problem report #18044

Attachment: el_os_command.e     Size:4613