AIUI, table variables generally are better when you're dealing with joins on PK (e.g. the cardinality is 1) than when you're trawling through bunch of random values (e.g. you're searching for something like StatusText LIKE 'deer%highlight%' where there can be multiple matches).
Because a table variable (used to?) has no statistics and you really need statistics for those type of searches.
Temp tables, OTOH has statistics, so it's better for those kind of searches.
If you look at the execution plans, you'll see two statistics, one about estimated # of rows, and other for actual # of rows. With table variables used like above, they'll be way off
IDK, right now I'm just happy that 98% of the work is now populating the temp table, and now the actual number-crunching happens pretty much instantaneously
Regarding the copyright talk, no contributer should ever be able to sue successfully for the copyright for RD. After all, all contributers waive their copyright to Mat and Chris according to the GPL.
Regarding refactoring the parser, I plan to do that after my wedding.
9 days to go.
For any further suggestions, please feel free to add to the corresponding issue.
Meh, maybe it's just my inexperience with it talking. But writing XML that writes C# that you hope will bind properly just feels really laboursome. Razor - take a model and interact with it directly in C#. Much quicker and easier IME.
My main problem is not that I have to write XAML instead of code-behind, but more that for anything of moderate complexity, there are 100 different ways to do it and all come with their quirk and nobody tells you when you can/can't use this or whatever. A good framework should give you one intuitive and easy way to do one thing.
So, given that VT_R8 has the highest precision for a Variant type representing an intrinsic, and given that I only need the value, is this prudent? Value = Marshal.GetObjectForNativeVariant<double>(variant);
I totally sympathize. I'm thinking that because there are 12 bytes that can be used or not used for "data", I don't want to get casting wrong, so I'd just use a generic method so that I can give it the vt and get back just right data type.
I'm still not entirely clear if Marshal.GetObjectForNativeVariant(variant) can potentially leak anything. If the RCW is marshaling it by value, it should be calling VariantClear().
What really isn't clear is if the RCW increases the reference count on a live object pointed to by the data area if it contains a pointer. My instinct is that it doesn't, in that all you have is a pointer to it, but the RCW's behavior around these functions is fuzzy as hell.
I'd just var variant = Marshal.PtrToStructure<Variant>(ptrVariant);
That's what Wayne does in the typelib API, IINM
and IINM, that should not change the reference count for the referenced object -- the value content of the variant would be a pointer which was already provided to the unmanaged variant before we called the PtrToStructure
I find that for this setup, an external HD dedicated to the VM is worth a lot. CPU and RAM are relatively cheap and easily shared. The drive's head is not as fast.
True whether we're talking about spinning magnetic disks or a block of porous silicion
That's what I mainly use mine for too, but it took so damned long to rip my DVD collection that I could double my storage capacity for what it would cost to get a minimum wage temp to redo it...