Sign in to follow this  
Followers 0

autoit.exe -> autoit.exe + autoit.dll

24 posts in this topic

Posted

Every time that nozzle a script keeps in memory various copy of autoit.exe.

It is possible to split autoit.exe in a autoit.exe small with the function launch the scripts. au3 and a autoit.dll that it comes recalled from all the autoit.exe launch?

Therefore the memory would be occupied from a great solo autoit.dll and many small autoit.exe instead of being occupied from many autoit.exe.

Excused my English.

Share this post


Link to post
Share on other sites



Posted

Look at a3x - isn't it solution?

Note: scripts can be compile with .a3x extension. They should be run with AutoIt.exe filename.a3x. The .a3x contains the script itself with all referred #include plus the FileInstall files. This format allow to distribute smaller files as they don't include the AutoIt3.exe in each compile script. You still need to have it accessible on the target machine but just AutoIt3.exe.

Share this post


Link to post
Share on other sites

Posted

Look at a3x - isn't it solution?

not why in the RAM memory if run 3 a3x it launch 3 big autoit3.exe.

i would to lanch 3 mini autoit.exe and 1 big autoit.exe.

Share this post


Link to post
Share on other sites

Posted

I understand what is being asked. Dlls are loaded into memory and are used by every program that needs them. Each executable file gets it's own memory space while a dll is loaded only once. Think of it this way.

3 * full executable(1 MB) = 3 MB

3 * mini executable(.1 MB) + 1 * dll(.9 MB) = 1.2 MB

Does the question make more sense now?

Share this post


Link to post
Share on other sites

Posted

Does the question make more sense now?

Yes, i say it :)

Share this post


Link to post
Share on other sites

Posted

I can see that is exactly what he wants. What I would recommend is that you make a script that starts the "Big" Executable, and have a few .a3x scripts waiting to be executed, and use the /execute script option. One "Big" Executable can execute more than one script if I am remembering correctly.

The syntax is as follows...

Run(@ScriptFullPath & ' /AutoIt3ExecuteScript ' & $PathOfNextScript)

I haven't actually tried this myself which means it may create a second instance of the AutoIt executable, but as stated before .a3x extension is so you can have multiple scripts, but with one big executable.

JS

Share this post


Link to post
Share on other sites

Posted (edited)

I can see that is exactly what he wants. What I would recommend is that you make a script that starts the "Big" Executable, and have a few .a3x scripts waiting to be executed, and use the /execute script option. One "Big" Executable can execute more than one script if I am remembering correctly.

The syntax is as follows...

Run(@ScriptFullPath & ' /AutoIt3ExecuteScript ' & $PathOfNextScript)

I haven't actually tried this myself which means it may create a second instance of the AutoIt executable, but as stated before .a3x extension is so you can have multiple scripts, but with one big executable.

JS

H'mmn, if those .a3x scripts can communicate with each other via the registry or some other method, wouldn't that give some degree of parallism?

The initial script could be minimal, just code to launch the .a3x scripts and then run a While 1/WEnd loop. The other scripts could access each other for simultaneous tasks like say running an I'm busy now clock while a large _arraysort() is running in the background, or do other proccessing giving a discrete(sp?) result.

Gene

Edited by Gene

Share this post


Link to post
Share on other sites

Posted

H'mmn, if those .a3x scripts can communicate with each other via the registry or some other method, wouldn't that give some degree of parallism?

The initial script could be minimal, just code to launch the .a3x scripts and then run a While 1/WEnd loop. The other scripts could access each other for simultaneous tasks like say running an I'm busy now clock while a large _arraysort() is running in the background, or do other proccessing giving a discrete(sp?) result.

Gene

When you are executing a new script you can use command line parameters to communicate between them. Or create a communication file or use the registry as well.

I hope this helps you on your journey,

JS

Share this post


Link to post
Share on other sites

Posted

When you are executing a new script you can use command line parameters to communicate between them. Or create a communication file or use the registry as well.

I hope this helps you on your journey,

JS

Thanks for the quick response. I was asking a slightly different question. I carefully used the word parallelism instead of multi-threaded proccessing, hoping to avoid a flame. If you can have multiple "modules" working different aspects of one overall task, isn't that a form of multithreading?

Gene

Share this post


Link to post
Share on other sites

Posted

Thanks for the quick response. I was asking a slightly different question. I carefully used the word parallelism instead of multi-threaded proccessing, hoping to avoid a flame. If you can have multiple "modules" working different aspects of one overall task, isn't that a form of multithreading?

Gene

In a manner. Multi-threading is using one executable with different forks in it to work all together. Using different Modules to work on different problems in procedural way, and making your own synchronization functions is in a way multi-threading, but different.

I hope that answers your question.

JS

Share this post


Link to post
Share on other sites

Posted

You all are missing Ontosy's question and apparently my explanation as well. Ontosy isn't asking for communication between scripts in any form whatsoever. Ontosy is asking that the bulk of AutoIt be in dll form so that it is only loaded into memory once instead of for every script that needs to be executed.

Share this post


Link to post
Share on other sites

Posted

You all are missing Ontosy's question and apparently my explanation as well. Ontosy isn't asking for communication between scripts in any form whatsoever. Ontosy is asking that the bulk of AutoIt be in dll form so that it is only loaded into memory once instead of for every script that needs to be executed.

Okay, I understand that, but unfortunately AutoIt isn't going to have a DLL.

JS

Share this post


Link to post
Share on other sites

Posted

this makes sense to me...

however the current exe is still quite small by todays standards so expect a lot of resistance.........

Share this post


Link to post
Share on other sites

Posted (edited)

You all are missing Ontosy's question and apparently my explanation as well. Ontosy isn't asking for communication between scripts in any form whatsoever. Ontosy is asking that the bulk of AutoIt be in dll form so that it is only loaded into memory once instead of for every script that needs to be executed.

You are OK :)

I understand that, but unfortunately AutoIt isn't going to have a DLL.

i have writed this post in "Feature Requests" to suggest :D

Edited by Ontosy

Share this post


Link to post
Share on other sites

Posted

In a manner. Multi-threading is using one executable with different forks in it to work all together. Using different Modules to work on different problems in procedural way, and making your own synchronization functions is in a way multi-threading, but different.

I hope that answers your question.

JS

Yes, it did, I also already understood the "real" meaning of multi-threading. I am thinking of using a .a3x script for things that can't be covered with a Progress Bar like array sorts. I kept following up because because I keep reading people who want to do multi-threading in spite of Valik's tireless efforts. Maybe they hadn't thought of using .a3x scripts. If any of them run across this thread it will give a whole new direction to explore. :)

I appreciate your responses.

Gene

Share this post


Link to post
Share on other sites

Posted (edited)

In order to make this, it would be sufficient to recompile the source in format DLL and to create a small file in order to link it?

Edited by Ontosy

Share this post


Link to post
Share on other sites

Posted

Do it is a bad idea?

i'm capable to run 10 autoit.exe instead of 1 autoit.dll

Share this post


Link to post
Share on other sites

Posted

Yes, Ontosy, I'm afraid that this idea will not pull through. When you receive no new replies for that long a span of time, you'd be better off giving up.

Share this post


Link to post
Share on other sites

Posted

autoit may use dll's as well, right?

why not write a script, witch launches the dll and compile it? or, if possible, call the dll via batch-file with this script as param, to get the dll memory resistant?

just an idea ...

Share this post


Link to post
Share on other sites

Posted

autoit may use dll's as well, right?

why not write a script, witch launches the dll and compile it? or, if possible, call the dll via batch-file with this script as param, to get the dll memory resistant?

just an idea ...

the problem not is to launches any dll ma launches autoit as dll and not as exe.

the problem is to have a autoit.dll not ActiveX that is but full AutoIt as dll.

Share this post


Link to post
Share on other sites

Posted

Therefore the memory would be occupied from a great solo autoit.dll and many small autoit.exe instead of being occupied from many autoit.exe.

Hm.. how many scripts do you run in parallel to get into trouble with RAM usage?? Any decent web-browser, will consume 10-30 x RAM than any AU3 script !??! I don't get it...

Share this post


Link to post
Share on other sites

Posted

I like the idea about autoit to be separated in one dll, and a small exe which makes calls to this dll.

Just because most of you probably have >1GB of ram and autoit.exe currently consumes only several megabites of it, does not mean it will not be better to even lower this usage. And it does not mean because our PC's are fast, the programs which run on them must not be optimized and with minimal memory requirements.

The lower requirements your program have, the better programmer you are :rolleyes:

Ontosy likes this

Share this post


Link to post
Share on other sites

Posted

I would this in AutoIt3:

using the same DLLs

Share this post


Link to post
Share on other sites

Posted

Isnt windows memory management designed to share modules in memory?

And modules are not just dll's.

Share this post


Link to post
Share on other sites
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.