Notices


Reply
 
LinkBack Thread Tools Display Modes

Old 05-28-2008, 04:22 AM   #1 (permalink)
Junior Member

Join Date: Apr 2008
Posts: 2
Rep Power: 0 Kevin Savage is on a distinguished road

Blackbaud Products
- Raiser's Edge (RE)
- API/VBA

Performance Testing the API

Hi,

I’ve been doing some performance testing of the RE API. We’ve always suspected that we had performance issues with this but I now have some strange results.


The below table summarises the basic results for adding fresh constituents through the RE API (sorry, I can't get to formatting correct):

No of constituents added Amount of time taken Average time per record
1 1.8 seconds 1.8 seconds
10 2.4 seconds 0.2 seconds
100 47.5 seconds 0.4 seconds
200 181 seconds 0.9 seconds
300 403 seconds 1.3 seconds
I stopped the following before it finished
1000 More than 50mins More than 3 seconds

Does anyone else see similar results? Have I done something wrong.

Kevin
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post!
Reply With Quote

Old 05-28-2008, 03:43 PM   #2 (permalink)
custom.part

digitalslacker's Avatar

Join Date: Oct 2006
Location: Annapolis, MD
Posts: 331
Rep Power: 3 digitalslacker is on a distinguished road

Blackbaud Products
- Raiser's Edge (RE)
- Information Edge (TIE)
- Financial Edge (FE)
- NetCommunity (BBNC)
- Blackbaud Analytics/Researcher's Edge (BBA/TRE)
- API/VBA

All the performance issues I have run into with the mainly the BBNC API have been mistakes on my part.
Once i have fixed them things seem to run pretty fast and the timeout errors typically go away.

what gets me sometimes is not closing down my objects properly in the finally
this includes doing a obj.CloseDown() but also a
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)

also make sure you are initing the REAPI outside your loop
that's gotten me a bunch of times


If you want to spit some of your code up here i'll have a look
i'm more familiar with the bbnc api
David Zeidman might have some insight if this pertains to RE


hope that helps a bit
__________________
Garrett Keating
Senior Web Developer
U.S. Naval Academy Alumni Association & Foundation
www.usna.com
customizingNetCommunity.com


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post!
Reply With Quote

Old 05-30-2008, 04:06 AM   #3 (permalink)
Likes to customize RE!

DavidZ's Avatar

Join Date: Jul 2006
Location: London, UK
Posts: 335
Rep Power: 3 DavidZ is on a distinguished road

Blackbaud Products
- Raiser's Edge (RE)
- API/VBA

I have never noticed the kind of performance issues that Kevin is describing and I have written applications that process tens of thousands of constituents and hundreds of thousands of gifts (well one application that did). It is possible that the hardware configuration makes a difference. Up to a smaller number of records any client can cope but for larger numbers less powerful clients cannot cope with the amount of memory required. This is especially true if you have any kind of memory leak. Over a small number of records this is not noticeable but over larger amounts even the smallest memory leak builds up into a large problem.

David
__________________
David Zeidman
Zeidman Development
http://www.zeidman.info

Check out my RE API blog
http://www.re-decoded.com

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post!
Reply With Quote

Old 05-30-2008, 08:25 AM   #4 (permalink)
o o o o o o o o o o o o o o o o o o

JeffMon's Avatar

Join Date: Aug 2006
Location: Charleston, SC
Posts: 54
Rep Power: 3 JeffMon is on a distinguished road

Blackbaud Products
- Raiser's Edge (RE)
- Financial Edge (FE)
- API/VBA

Hi Kevin,

Have you tried using IBBTobObject2's SaveAndCloseDown() method? This method is optimized for (OK, you probably guessed this) saving and closing down a record. It skips a lot of steps in the normal Save() routine that would only be necessary if you are saving an object and then continuing to use it. Try plugging it into your performance test and let us know what the results are. Here's a demo of how it's used:

Public Sub TestSaveAndCloseDown()
Dim oC As CRecord
Set oC = New CRecord
oC.Init REApplication.SessionContext
oC.Fields(RECORDS_fld_LAST_NAME) = "TestSaveAndCloseDown"

Dim oTO2 As IBBTopObject2
Set oTO2 = oC
oTO2.SaveAndCloseDown
Set oTO2 = Nothing
Set oC = Nothing
End Sub

If you can share your code, we might be able to make other suggestions as well.

Jeff

Last edited by JeffMon; 05-30-2008 at 08:27 AM. Reason: format
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post!
Reply With Quote
Reply

Tags
api, performance


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


Cheap Gas - Loans - United Specialties - Credit Card Consolidation
All times are GMT -6. The time now is 03:49 AM.

Miscellaneous


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Integrated by BBpixel Team 2008 :: jvbPlugin R1012.364.1

SEO by vBSEO 3.2.0 Copyright 2008 Blackbaud User SocietyAd Management by RedTyger
Inactive Reminders By Icora Web Design

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64