hello all
I am new to ACL, so accept my apologies if what I'm going to say is trivial.
I have a Windows ACL6.2 project (.lpr), comprising about a dozen .cl files.
I now need to port this project under ACL6.2 Linux. I have set up a
Makefile which invokes 'alisp -L make-E.cl', where make-E.cl is the
following piece of code:
---------------------------------------------------
(proclaim '(optimize (speed 3) (safety 0) (space 0) (debug 0)))
(generate-executable
"epilitis"
'("structs.cl" "input.cl" "common.cl"
"preprocess.cl" "ffcdb.cl" "heuristics.cl"
"experiments.cl" "arcconsistency.cl" "expdesign.cl"
"nogoods2.cl" "pgenerator.cl" "dataanalysis.cl"
"expdesign2.cl" "execution.cl" "optimization.cl"
:loop
:seq2
)
)
(exit)
---------------------------------------------------
It compiles fine and generates the executable, but it is about 1000 times
slower than the Windows version. It is not a problem of application
building, since the same time gap is shown if I issue the related commands
within the interpreter.
Any ideas? Is there any switch I am forgetting which is automatically set
by the windows version but not under linux?
(both ACLs are trial versions)
thank you,
Claudio
Claudio Castellini <·····@NO.dist.SPAM.unige.it> writes:
> hello all
>
> I am new to ACL, so accept my apologies if what I'm going to say is trivial.
>
> I have a Windows ACL6.2 project (.lpr), comprising about a dozen .cl files.
> I now need to port this project under ACL6.2 Linux. I have set up a
> Makefile which invokes 'alisp -L make-E.cl', where make-E.cl is the
> following piece of code:
>
> ---------------------------------------------------
> (proclaim '(optimize (speed 3) (safety 0) (space 0) (debug 0)))
>
> (generate-executable
> "epilitis"
> '("structs.cl" "input.cl" "common.cl"
> "preprocess.cl" "ffcdb.cl" "heuristics.cl"
> "experiments.cl" "arcconsistency.cl" "expdesign.cl"
> "nogoods2.cl" "pgenerator.cl" "dataanalysis.cl"
> "expdesign2.cl" "execution.cl" "optimization.cl"
> :loop
> :seq2
> )
> )
The above won't compile the files. It will just loaded the source.
>
> (exit)
> ---------------------------------------------------
>
> It compiles fine and generates the executable, but it is about 1000 times
> slower than the Windows version. It is not a problem of application
> building, since the same time gap is shown if I issue the related commands
> within the interpreter.
>
> Any ideas? Is there any switch I am forgetting which is automatically set
> by the windows version but not under linux?
Perhaps you should compile the files? On Windows, the project system
does that for you. See the function compile-file.
>
> (both ACLs are trial versions)
>
> thank you,
> Claudio
Kevin Layer wrote:
> Perhaps you should compile the files? On Windows, the project system
> does that for you. See the function compile-file.
Or use defsystem, compile-system, and load-system, which are a semi-portable
approach to defining programs that consist of multiple files.
Kevin Layer wrote:
>> Any ideas? Is there any switch I am forgetting which is automatically set
>> by the windows version but not under linux?
>
> Perhaps you should compile the files? On Windows, the project system
> does that for you. See the function compile-file.
Hello Kevin,
you were absolutely right. I now compile the files *before* generating the
executable, and I generate it with the *.fasl versions:
------------------------------------- make-E.cl
(proclaim '(optimize (speed 3) (safety 0) (space 0) (debug 0)))
(compile-file "structs.cl") (compile-file "input.cl")
(compile-file "common.cl") (compile-file "preprocess.cl")
(compile-file "experiments.cl") (compile-file "nogoods2.cl")
(compile-file "expdesign2.cl") (compile-file "ffcdb.cl")
(compile-file "heuristics.cl") (compile-file "arcconsistency.cl")
(compile-file "expdesign.cl") (compile-file "pgenerator.cl")
(compile-file "dataanalysis.cl") (compile-file "execution.cl")
(compile-file "optimization.cl")
(generate-executable
"epilitis"
'("structs.fasl" "input.fasl" "common.fasl"
"preprocess.fasl" "ffcdb.fasl" "heuristics.fasl"
"experiments.fasl" "arcconsistency.fasl" "expdesign.fasl"
"nogoods2.fasl" "pgenerator.fasl" "dataanalysis.fasl"
"expdesign2.fasl" "execution.fasl" "optimization.fasl"
:loop
:seq2
)
)
-----------------------------------------------
Now timings seems fair. By the way: is that the fastest, although unsafest,
setting I can get? (I mean the proclaim... stuff at the beginning)
Thank you very much for your help. I guess we will include your name in the
paper we are about to write.
cheers,
c.
Claudio Castellini <·····@NO.dist.SPAM.unige.it> writes:
> Kevin Layer wrote:
> >> Any ideas? Is there any switch I am forgetting which is automatically set
> >> by the windows version but not under linux?
> >
> > Perhaps you should compile the files? On Windows, the project system
> > does that for you. See the function compile-file.
>
> Hello Kevin,
>
> you were absolutely right. I now compile the files *before* generating the
> executable, and I generate it with the *.fasl versions:
>
> ------------------------------------- make-E.cl
> (proclaim '(optimize (speed 3) (safety 0) (space 0) (debug 0)))
> ...
>
> Now timings seems fair. By the way: is that the fastest, although unsafest,
> setting I can get? (I mean the proclaim... stuff at the beginning)
You still might need to use `declare' to tell the compiler the types
of things. I also suggest using the profiler to find areas to
optimize.
See http://www.franz.com/support/documentation/6.2/doc/profiling.htm
for more information.
Claudio Castellini wrote:
> Any ideas? Is there any switch I am forgetting which is automatically set
> by the windows version but not under linux?
I have no idea what's causing the problem, but the profiler ought to tell
you pretty quickly. (If the trial version has the profiler...)
-- Scott
--
To send email, remove uppercase characters from address in header.