Tim Cooke wrote:I propose a challenge. Mostly for you Alexey.
Tim Cooke wrote:The company I work for is one of the biggest, if not the biggest, financial trading platforms in the world, and we spend a lot of resources finding ways to improve the throughput speed of our systems. Blindingly fast queues are a big deal. So, if you can outperform Martin's queue implementation (which I believe to be the fastest there is) then you're really on to something.
Are you up for a challenge?
Henry Wong wrote:In fact, IMO, this is why no-one uses an assembler anymore.
Henry Wong wrote:And of course, Java can't support this as there is no way to do this in platform independent manner.
Alexey Bezrodnov wrote:having a big money and asking to help you for free is a bit unfair
Tim Driven Development | Test until the fear goes away
Alexey Bezrodnov wrote:It's too bold statement to be true.
"Leadership is nature's way of removing morons from the productive flow" - Dogbert
Articles by Winston can be found here
Gary W. Lucas wrote:Anyway, I have a question about a problem I am working on right now. One of the tools used for processing surface elevation data is the Triangulated Irregular Network (TIN) such as the one shown at this picture of a TIN. With the advent of lidar technology (laser-based elevation surveys with a point-spacing of 1 meter per sample), it is common to process files that contain multiple millions of sample points. My current implementation can build a TIN from 1 million points in about 0.4 seconds on a typical PC...
"Leadership is nature's way of removing morons from the productive flow" - Dogbert
Articles by Winston can be found here
Tim Cooke wrote:
Alexey Bezrodnov wrote:having a big money and asking to help you for free is a bit unfair
Apologies. I can see how it may have come across that way but it certainly wasn't my intention.
I was merely letting you know of a real world application that you could consider competing for, that could earn you some serious income.
Tim Driven Development | Test until the fear goes away
Winston Gutkowski wrote:Even most geeks I know that love bit-and-byte-twiddling and writing drivers use C these days;
Winston Gutkowski wrote:
Not so sure. Even most geeks I know that love bit-and-byte-twiddling and writing drivers use C these days; and I suspect that similar ops in Java are running in peko-second time nowadays, given that my 7-year old Dell can do them in sub-nanosecond (averaged over billions of ops).
Gary W. Lucas wrote:Does your solution address any memory management or object-construction related issues?
Henry Wong wrote:IMO, there isn't anything that isn't already exposed in Java that could be used to improve this.
Alexey Bezrodnov wrote:
Winston Gutkowski wrote:Even most geeks I know that love bit-and-byte-twiddling and writing drivers use C these days;
Well, they use C, it's great! But they also use assembly, aren't they? So, the Henry's statement is still too bold.
Alexey Bezrodnov wrote:But there is a drawback, you need to spend some time improving your program. Do not expect, that it will be improved automatically, as some members here do.
"Leadership is nature's way of removing morons from the productive flow" - Dogbert
Articles by Winston can be found here
Gary W. Lucas wrote:Actually, the performance stats I was referring to are based on just the time to process the data. I maintain different timers for different phases of the operation. Once I got the file-reader implemented cleanly, I figured that disk performance was a fixed cost that I couldn't address in software. Just now, I am focused on algorithmic considerations.
"Leadership is nature's way of removing morons from the productive flow" - Dogbert
Articles by Winston can be found here
Tim Driven Development | Test until the fear goes away
Tim Cooke wrote:The 'Java performance booster' part comes from you rewriting your Java algorithm as a more efficient assembler algorithm.
Tim Cooke wrote:What we have here, is a thin wrapper on JNI allowing you to write, and interface to, assembler code in an "improved" manner over just using JNI directly.
Alexey Bezrodnov wrote:Any technology on earth requires some knowledge and efforts to be used properly...
"Leadership is nature's way of removing morons from the productive flow" - Dogbert
Articles by Winston can be found here
Winston Gutkowski wrote:Actually, the changes to the memory model in early releases of Java resulted in dramatic improvements in speed with no effort at all on the part of programmers.
Winston Gutkowski wrote:And this is the main problem with things like optimization in Java. You just never know when a new release is going to make all your efforts redundant; or even - as in the above example - broken.
Tim Driven Development | Test until the fear goes away
Alexey Bezrodnov wrote:So, I see it is better to just not be bothered with some changes in the future, but to be prepared and agile enough to cope with the complexity of life.
"Leadership is nature's way of removing morons from the productive flow" - Dogbert
Articles by Winston can be found here
Tim Cooke wrote:I do get it, really I do.
Tim Cooke wrote:I'll openly admit that my reluctance to fully engage with this system is my lack of assembler programming skills. I have not programmed assembler since 1996, which was for a MOS 6502 processor. A relative dinosaur compared to a modern Intel chip, for which I have never written assembler.
Winston Gutkowski wrote:To me, the easiest way not to worry about the future is not to do things that might be affected by it. Much of good OO design is about putting off decisions that don't need to be made, and IMO, optimization is almost always one of them.
Alexey Bezrodnov wrote:Your defensive approach is weak when it meets the real world. You just can't predict, where the future will get you.
"Leadership is nature's way of removing morons from the productive flow" - Dogbert
Articles by Winston can be found here
Ernest Friedman-Hill wrote:It seems odd to suggest that there is a large population of people who can program in assembly
Ernest Friedman-Hill wrote:Years ago I wrote a Javadoc doclet that let you put JNI implementations in the doc comments of native method declarations. By using preprocessor guards, you could include implementations for multiple platforms, all in the one Java file. The doclet would generate compilable C++ source, easy to include in your build process. You could have used inline assembly with it if you wanted.
Winston Gutkowski wrote:I'm not quite sure what you're referring to as "defensive"
Winston Gutkowski wrote:Avoidance is a perfectly reasonable strategy for success, whether in programming, politics, game theory or military tactics; and the first quote I read about it was at the top of the very first chapter of the first book I read about Object Orientation:
When it is not necessary to make a decision, it is necessary NOT to make a decision. − Lucius Cary, 1st Viscount Falkland, 1643.
Winston Gutkowski wrote:Your "booster" - however good - and optimization in general, requires a commitment to an implementation.
Winston Gutkowski wrote:Now I understand that in certain, cases, there may be an overriding need for efficiency (speed not necessarily being the only metric); but far from being the "real world", I suspect that such situations are actually very rare indeed - at least as set against the vast majority of "apps" programming - so you'll have to understand my scepticism at some of your claims.
Alexey Bezrodnov wrote:You are going to protect (defend) everything far before a battle. While my approach is about looking at the enemy movements and reacting accordingly.
Ok, but if you already have met the unavoidable? And you are not prepared.
Or you can predict the future and is prepared to every possible change?
"Leadership is nature's way of removing morons from the productive flow" - Dogbert
Articles by Winston can be found here
Winston Gutkowski wrote:
Alexey Bezrodnov wrote:You are going to protect (defend) everything far before a battle. While my approach is about looking at the enemy movements and reacting accordingly.
No. Your approach is to say: "Use MY product, and let it make the decisions for you". And it sounds rather "Gates-ish" to me.
MY approach is to say: don't make that decision - especially if you don't need to.
Winston Gutkowski wrote:No. Your approach is to say: "Use MY product, and let it make the decisions for you". And it sounds rather "Gates-ish" to me.
Winston Gutkowski wrote:The rest seems to boil down to an analysis of how many people (or what percentage) this product will be useful to
Alexey Bezrodnov wrote:My approach is about to show a new tool [...] And while you do not need it, just leave it in a toolbox.
But don't forget that if personally you do not need the tool, it just doesn't mean the tool should be dismissed.
"Leadership is nature's way of removing morons from the productive flow" - Dogbert
Articles by Winston can be found here
Winston Gutkowski wrote:My worry is that the decision to use it is not without cost - and therefore should be taken cautiously - and should probably include not only a plan for adoption, but one for removal should the tool ever be improved on (eg, perhaps by a new version of RMI?).
Winston Gutkowski wrote:I'm just not sure how big that environment is.
Alexey Bezrodnov wrote:I prefer not to be so cautious about new technology usage. If my evaluation shows me more benefits than a possible value of problems, then I just use a technology. And I suppose most developers can assess their benefits also, so they can decide about the need for the Machine Level Java and they can easily determine the size of "that environment" in the end of an adoption process.
Alexey Bezrodnov wrote:It seems just as simple and as efficient as touch based interface of tablet and smart-phone devices vs old style 12-15 buttons equipped phones.
Winston Gutkowski wrote:Give me my damn number pad back!!
Winston Gutkowski wrote:However, I completely agree with your new "definition", and I'd go further - the simpler you can make it, the more likely people are to use it.
Don't get me started about those stupid light bulbs. |