Corona® Profiler- A Line-by-Line Analysis of Your Code - New Update

M.Y.developers,
interesting, but i failed to reproduce this problem, nevermind then) [import]uid: 16142 topic_id: 17975 reply_id: 79289[/import]

I put the delay in and I still get
profiler started default 1
profiler stopped, change in memory is: 8.01953125 KB (large positive numbers may indicate a memory leak
WARNING: url( /Users/rick/Library/Application Support/Corona Simulator/17 second loa timer-3F2986799349242C16CECA1AF5F40935/Documents/profileTime.html ) is not supported by the simulator
Is 8 kb such a large change in memory to stop the profiler. I print the memory at the end of my main file and it seems to stay stable is there anything else I should check that stops the profiler? [import]uid: 107974 topic_id: 17975 reply_id: 79514[/import]

@fastek2000,
Sorry you are having problems.
Try commenting out the profiler line and see if you have any runtime errors, sometimes these are masked when the profiler is active. Did you set the time parameter? Please send us a code sample so we can replicate the problem and fix it faster for you.
Thank you,
M.Y. Developers [import]uid: 55057 topic_id: 17975 reply_id: 79592[/import]

@ Mo,
Let us know about your experiences with the LAN module, we are very interested to know how it goes!
Thanks,
M.Y. Developers [import]uid: 55057 topic_id: 17975 reply_id: 79593[/import]

I will. Busy busy finishing my current app. The last %10 dev is a killer!
Cannot wait to play with LAN when I get a chance. I will report here when the time comes.

Mo. [import]uid: 49236 topic_id: 17975 reply_id: 79596[/import]

Hello Community,
Unfortunately there have been problems with Dreamhost recently and our website is currently down. We are working to fix this issue so please be patient.

Here is an update on development.
We are working on a new feature that will make finding memory leaks even easier. Basically it will be a way-point based system that allows you to compare Lua table size from point to point to see what tables are causing leaks.

Thank you,
M.Y. Developers [import]uid: 55057 topic_id: 17975 reply_id: 81602[/import]

Hey @MY,

Wouldn`t you have a link for us your customers download the new updates from there? Like so you would OR send your customers a newslatter via mail (advising the update) OR at least tell about it here into your forum topic. Like so would be easiest to have always the latest version of your product without needing to worry coming into this post to see if YES or NO updates by the time. Got it?

Thank you in advance,
Rodrigo.

[import]uid: 89165 topic_id: 17975 reply_id: 82079[/import]

Rodrigo,

You should have got an email from our digital distributor. It contains a download link and all future updates will be distributed this way. Did you receive it?

Thanks,
M.Y. Developer [import]uid: 55057 topic_id: 17975 reply_id: 82083[/import]

Hello Community,
We are pleased to announce a new version of profiler! Thanks to all who have supported us this far we really appreciate it. Whats new in this version:

  • A new profiler mode! This new mode will help you determine exactly what tables are increasing from snapshot to snapshot. Profiler will iterate through all your local and global variables and find the ones that are getting bigger signaling a memory leak. How to use it? Simple:
profiler = require("Profiler")  
profiler.startProfiler{mode = 4}  
--the following line will make a snapshot and compare it to the   
--previous snapshot giving you the differences detected.  
profiler.diffSnapshot()  
--the following will give you a full snapshot of all your tables  
--so you can see how big they are at any point in time.  
profiler.fullSnapshot()  

-We also removed the module(…) system and replaced it with a fully table based approach.
-Various speed improvements were also made.

We hope you will enjoy the product and as always let us know if you have any problems.

As with any update the first 5 buyers will get a

20% discount!

(discount applied automatically)

If you have already bought profiler you should have received an email with the download link. Please send us an email if you have not.

Thanks,
M.Y. Developers [import]uid: 55057 topic_id: 17975 reply_id: 82073[/import]

Hey @M.Y,

Sorry!

I got it right NOW! Awesome.
Thanks for the attention.
Rodrigo. [import]uid: 89165 topic_id: 17975 reply_id: 82085[/import]

Rodrigo,

No problem! Rest assured you will be notified of any updates this way.
Let us know what you think about the update. We hope you like it!

Thanks,
M.Y. Developers [import]uid: 55057 topic_id: 17975 reply_id: 82086[/import]

@M.Y. - Yes, when I get the time to see the update better (next weekend) I can tell stg about it. :slight_smile:

BTW - Totally awesome support developers. Thanks for it as IMO a good customer support is the right “key” for any business.
Cheers,
Rodrigo. [import]uid: 89165 topic_id: 17975 reply_id: 82089[/import]

Thank you for version 1.3 i am very excited about mode 4 but I have to admit I am at lost on where to put either the line:

profiler.diffSnapshot(“optional name”)

nor

profiler.fullSnapshot(“optional name”)

For instance i discovered that I have a memory leak (about 2K) on my gameScreen.lua I do not seems to have a leak when I go to my other screens like help.lua, score.lua or options.lua for menuScreen.lua and back.

But going to my gameScreen.lua I can see +2K when going back to the menuScreen. Now It has been while since I did used the profiler on my game (busy coding new things…) So I can see I introduced a leak somewhere. (I did not use the profiler for the finding of +2K but simply used the graphical memory display “likeloq_profiler”…it is a good start to see and then I use your profiler to pinpoint more precisely where the leak(s) maybe)

Anyway, where do you think I need to put one those profiling lines in my code? I will assume gameScreen.lua but where? At the beginning? Do I need to put the line in more places in gameScreen.lua?

I am probably too tired and did not get the concept of mode 4 but I will love to learn more!

Thank you for always innovating! Memory leaks are a pain and your profiler is the cure!

Mo

ps: stupid question: where do I found my sandbox on a PC? (Vista)

[import]uid: 49236 topic_id: 17975 reply_id: 82137[/import]

Hello Mo,

Anyway, where do you think I need to put one those profiling lines in my code? I will assume gameScreen.lua but where? At the beginning? Do I need to put the line in more places in gameScreen.lua?
The best place to put it is during screen changes. So in your case you should put it (just a profiler.diffSnapshot()) in either the enter scene or exit scene functions (if you are using storyboard). Next just cycle back and forth between your scenes and if you have a leak your memory consumption should be increasing. Now go to file->show project sandbox and this will open the sandbox for your project. Navigate to the documents and open snapshot.html. From there you can see what variables contribute to the +2K memory increase.

So it will end up looking like this

-- Called immediately after scene has moved onscreen:  
function scene:enterScene( event )  
 local group = self.view  
 profiler.diffSnapshot()   
 -----------------------------------------------------------------------------  
  
 -- INSERT code here (e.g. start timers, load audio, start listeners, etc.)  
  
 -----------------------------------------------------------------------------  
  
end  

Just go back and forth between your menus and each time you cycle you will see the snapshot.html update in your browser.

Let us know if you have any more questions,
M.Y. Developers [import]uid: 55057 topic_id: 17975 reply_id: 82144[/import]

Thanks! Do you guys ever sleep? ha ha!

Actually I am using director. Should I do something like this?

[lua]-- in menu screen (menuScreen.lua)

profiler.diffSnapshot()
director:changeScene(‘gameScreen’)
– in game screen (gameScreen.lua)

profiler.diffSnapshot()
director:changeScene(‘menuScreen’)[/lua]
OR simply put one profiler.diffSnapshot() in the menu screen as seen above and not worry about the one in gameScreen?

THANKS!
Mo
[import]uid: 49236 topic_id: 17975 reply_id: 82154[/import]

Mo,
ha ha yes we do sleep but we are night owls :slight_smile:
You just need to put the diffSnapshot line wherever you want to get a comparison from one call to the previous. So for your case you should just place it in the menu screen, just make sure it gets called every time you go back and forth from you two screens.

Let us know what you find.
-M.Y. Developers [import]uid: 55057 topic_id: 17975 reply_id: 82163[/import]

Outstanding work! This Corona Profiler is seriously the gift that keeps on giving with all the recent updates. Keep 'em coming! [import]uid: 49447 topic_id: 17975 reply_id: 82206[/import]

If anyone is having trouble running the Corona Profiler examples on the PC and get the “Cannot create path for resource file” error, you probably have some characters in the directory structure that Corona simulator is choking on. I had to change a directory entry “corona®_profiler” to “corona_profiler” removing the “®” symbol to get the examples to run properly.

Jeff
[import]uid: 14119 topic_id: 17975 reply_id: 82217[/import]

To: M.Y. Developers,

Just a heads up, your “extractFile(text)” function in “Profiler.lua” does not allow hyphens in the directory or filename.

Example: A directory like “\1-24-2012” would need to be changed to “\1_24_2012”

Jeff
[import]uid: 14119 topic_id: 17975 reply_id: 82225[/import]

@producerism
Thank you for the kind words! Hope you like the update.

@HabitatSoftware
Thank you for letting us know about the issue. The “-” character is a special character for the string patterns library so we had to use plain text mode. Sorry about that but you can change line 197 from

local start, finish = string.find(text, baseDir) 

to

local start, finish = string.find(text, baseDir,0,true)

And that will fix your problem. This is definitely something to keep in mind for string.find.

Thanks,
M.Y. Developers
[import]uid: 55057 topic_id: 17975 reply_id: 82331[/import]