Re: MathLink questions
- To: mathgroup at smc.vnet.net
- Subject: [mg4201] Re: [mg4138] MathLink questions
- From: John Fultz <jfultz>
- Date: Thu, 13 Jun 1996 23:10:50 -0400
- Sender: owner-wri-mathgroup at wolfram.com
> Recently there has been some discussion of MathLink here > so I thought I could throw in my own trouble. > > I want to add some numerical functions written in C to > Mathematica. Eventually I managed to do so (using CodeWarrior), > and it works fine. But: > > i) in 3 of 4 cases, mprep crahes. It crashes less frequently if > I turn off the memory manager (I am using a power mac 7100). Try turning off the General Controls control panel. There is a bug in this control panel which can cause SAmprep to crash. > ii) I have some mysterious crashes when running the compiled program with > Mathematica like a frozen cursor. Is there a way to find out whether > my own program causes the trouble (without tracing through the program). I don't think you'll be able to get out of tracing your program. However, one preliminary thing you can do before pulling out the debugger is put some MLEvaluate() statements through your code. For example: MLEvaluate(stdlink, "Print[\"Made it to checkpoint 1\"]"); while(MLNextPacket(stdlink) != RETURNPKT) MLNewPacket(stdlink); MLNewPacket(stdlink); You can litter these kinds of statements throughout your code (perhaps you'll want to define this as a macro) to help you track down the point where a crash happens. > iii) And actually, how fast is MathLink? That is, should I dare to call > a MathLink function 10^6 times or should I rather do the whole computation > in my program and write the result to a giant hard disc? I wouldn't recommend making thousands of individual calls for small bits of data in a speed critical application. MathLink will be more efficient if you can cache the information inside your program, and send it back in one big chunk when necessary. Remember that even installable MathLink programs maintain state from one MathLink call to the next--instead of storing the information in a file, you can just store up the information in a memory location pointed to by a global or static variable. > Matthias Sincerely, John Fultz jfultz at wolfram.com Applications Group Wolfram Research, Inc. ==== [MESSAGE SEPARATOR] ====