|
Store the list and the current run number in state somewhere – I'd put them in a file, but you could use the registry or even a database if your app already needs one. On startup, read the run counter, increment it, re-save the state and read the appropriate URL and user agent combo. (You could read the whole list and just index into it, if it's small, which it is in your question.)
|
|
|
|
|
|
I'm trying to optimise the following Slope method so that it runs in as few clock cycles as possible.
Any Suggestions?
public static double?[] slopeImpl(double?[] vals, int offset)
{
double y = 0;
int iterableLength = vals.Length;
int numValues = vals.Length;
double invNumValues = 1.0 / (vals.Length - offset);
double x = (double)(((numValues * (numValues - 1)) >> 1) - ((offset * (offset - 1)) >> 1));
for (int i = offset; i < iterableLength; i++) {
y += (vals[i].GetType() == typeof(System.DBNull)) ? 0.0 : (double)vals[i];
}
y = y * invNumValues;
double v1 = 0.0;
double v2 = 0.0;
double v2HalfResult = 0.0;
for (int i = offset; i < iterableLength; i++) {
v2HalfResult = (i - x);
v1 += (v2HalfResult) * ((double)vals[i] - y);
v2 += (v2HalfResult) * (v2HalfResult);
}
double slope = v1 / v2;
double intercept = y - slope * x;
double?[] result = new double?[2];
result[0] = slope;
result[1] = intercept;
return result;
}
What I have considered:
1. There are two loops which are iterating the same number of times; however I am not sure if it is possible to use one loop. The second loop is dependant on the value of y which is calculated in the first loop and the line after.
2. Use a table to calculate x which is of the form
n(n-1) /2. Possible, however the values array can contain more than 365 elements.
Thanks for any help.
modified 5-Mar-12 21:35pm.
|
|
|
|
|
Instead of
y += (vals[i].GetType() == typeof(System.DBNull)) ? 0.0 : (double)vals[i];
could be changed to something along the lines of
if (vals[i].HasValue) y += vals[i].Value;
But are there actually any null values? Changing the argument to just a straight out double[] would definitely help
"You get that on the big jobs."
|
|
|
|
|
Thanks for the help, and yes the vals array can contain null values.
|
|
|
|
|
No you can't avoid the two loops, you need the averages first, then the deviations, which you can't get without knowing the averages first.
IMO all you can do is clean up your code a bit, by:
- getting rid of the nullables, GetType() and typeof;
- not calling vals.Length three times;
- returning just the slope as a double;
- not calculating the intercept, unless you really need it, and then maybe provide the intercept as an out parameter (this saves the allocation of the double[2] array).
BTW: using >>1 to divide by 2 does not really help; compilers are smart enough to emit decent code to divide by 2.
BTW2: I have some doubts about the correctness of your line
double x = (double)(((numValues * (numValues - 1)) >> 1) - ((offset * (offset - 1)) >> 1));
it doesn't agree with my intuition, e.g. changing the value of offset from 0 to 1 would not change x at all??
|
|
|
|
|
Thanks Luc. I was so caught up with optimising that I missed the case where offset was one will have to handle that. Good job spotting this.
|
|
|
|
|
Using double not double?, and if necessary using double.NaN for missing values, should help considerably.
|
|
|
|
|
I desperately need a semantic music engine working project..if anyone have their hands on it plz mail it on shaikh.bros21@gmail.com
|
|
|
|
|
Posting your email address is a Very Bad Idea.
And please explain what it is you are talking about.
|
|
|
|
|
Sounds complicated. It's highly unlikely that anyone here has a copy for you to have, and if they did, they would probably want a lot of money for the source. By the way, if you don't want spam, don't put your email address into a public forum.
|
|
|
|
|
I'm new to Async programming. I have this method:
private void getUserInfo(string UserId)
{
var task = facebookClient.GetTaskAsync(UserId);
Action<object> action = userInfoRequestCallback;
task.ContinueWith(action);
}
the callback is
private void userInfoRequestCallback(object data)
{
Task<object> task = data as Task<object>;
IDictionary<string, object> results = task.Result as IDictionary<string, object>;
FacebookUser = new FacebookUserModel
{
UserId = (string)results["id"],
UserName = (string)results["name"],
FirstName = (string)results["first_name"],
LastName = (string)results["last_name"],
Link = (string)results["link"],
Gender = (string)results["gender"],
Locale = (string)results["locale"],
};
}
How do I return a value from the getUserInfo, so that I can do:
FacebookUserModel user = getUserInfo("someid");
Everything makes sense in someone's mind
|
|
|
|
|
You don't. Application processing continues immediately after firing off the async call so you cannot return values that depend on the callback completing. The way round it is to set this value from your callback, so you will need a member variable to hold the value. Alternatively, look at the Task Parallel Library which would ease this for you considerably.
|
|
|
|
|
async call = get it done at your leisure
return value = I need it as soon as you return
So the only way to get the return value is by re-synchronizing inside the method, which might defeat the whole idea of using an async call.
|
|
|
|
|
I would use the new async keyword. It encapsulates everything for you including waiting for the response. Much easier then other alternatives.
|
|
|
|
|
And currently only available as part of the Async CTP or Visual Studio 11 (.NET 4.5).
|
|
|
|
|
I use either POHs method, have the callback populate a structure that has onpropertychage to notify the UI. Or if the caller is not the UI I send out a message, this happens when I start an application and all the static data is loaded rather than fire off multiple calls to the service I chain them using the message sink initiate the next service call.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
You can't, and if you think about it you'll see why: the whole purpose of asynchronous programming is that the request returns before it completes, so you can't have the result of running the method. You have two options:
i) call the method synchronously, or
ii) accept that you won't have the result, populate a member variable in the callback and have any downstream code that might read it check whether it's initialised. (If it's not, you can either abort the process or re-queue it, possibly with a delay, depending on what you are trying to do and which is appropriate.)
|
|
|
|
|
Hi I've created a windows app for a user to manage company info. I have a main form with fields(textboxes, datagrids, dates, comboboxes etc) to be completed for new companies. For any existing companies I'd like to add a search box to my main form and I suppose on the click event of a Search button I'd like to prefill the form with all the relevant data. Can anyone point in the direction to any tutorials, links that show me how to do this? I'm relatively new to C# and this is my first project using an EDM.
Thanks for your help
|
|
|
|
|
Hi All,
Trying to get an Input box in C#, (it was asked for!/demanded) I have in the past used
SN = Microsoft.VisualBasic.Interaction.InputBox("Enter Serial Number", "", "", 200, 150);
with the definition
using Microsoft.VisualBasic;
I get the below error:
I'm sure of it but now get Error The type or namespace name 'Interaction' does not exist in the namespace 'Microsoft.VisualBasic' (are you missing an assembly reference?)
What am I doing wrong?
Glenn
|
|
|
|
|
As the message says, you appear to be missing the reference to the assembly that contains this class. Check the references section of your project (in Solution explorer) and add the necessary item.
Unrequited desire is character building. OriginalGriff
I'm sitting here giving you a standing ovation - Len Goodman
|
|
|
|
|
If it helps, the required dll is here on my machine:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.VisualBasic.dll
|
|
|
|
|
If you don't want to use the VB-originated InputBoxes, and/or want a slightly different functionality, you can easily roll your own. That is what I did, with a base class, and some derived ones for different kinds of return types and validation rules.
|
|
|
|
|
|
To all who replied (mostly after I chucked coding for the day!!) I have now solved the issue Thank You! The method I had used didn't work this time due to a PC rebuild moving every thing!
Thanks again
Glenn
|
|
|
|