I saw a presentation on sqlite by Dr Hipp that mentioned that anytime I'm storing data in structures or tables, I should be thinking about using sqlite instead.
Would it be more efficient to use the sqlite database to store a table that Looks like this: where lets say I'm looking for the word "auto-align". Would the query be quicker than searching through this table in a "for" or while loop? Assume the table has about 200 entries. I want to know if the performance will be better and if I should consider storing these constants in the database. . . {"giants", e_sf_attr_pm_ethernet_giants}, {"last_time_cleared", e_sf_attr_pm_ethernet_last_time_cleared}, {"port_counters_start", e_sf_attr_pm_ethernet_port_counters_start}, {"port_counters_end", e_sf_attr_pm_ethernet_port_counters_end}, {"mac_rcv_unicast", e_sf_attr_pm_ethernet_mac_rcv_unicast}, {"mac_rcv_multicast", e_sf_attr_pm_ethernet_mac_rcv_multicast}, {"mac_rcv_broadcase", e_sf_attr_pm_ethernet_mac_rcv_broadcast}, {"mac_xmit_unicast", e_sf_attr_pm_ethernet_mac_xmit_unicast}, {"mac_xmit_multicast", e_sf_attr_pm_ethernet_mac_xmit_multicast}, {"mac_xmit_broadcast", e_sf_attr_pm_ethernet_mac_xmit_broadcast}, {"mac_rcv_octet", e_sf_attr_pm_ethernet_mac_rcv_octet}, {"mac_xmit_octet", e_sf_attr_pm_ethernet_mac_xmit_octet}, {"mac_delay_exceed", e_sf_attr_pm_ethernet_mac_delay_exceed}, {"mac_mtu_exceed", e_sf_attr_pm_ethernet_mac_mtu_exceed}, {"mac_in_discard", e_sf_attr_pm_ethernet_mac_in_discard}, {"mac_out_discard", e_sf_attr_pm_ethernet_mac_out_discard}, {"mac_last_time_cleared", e_sf_attr_pm_ethernet_mac_last_time_cleared}, {"manual_align", e_sf_attr_pm_manual_alig}, {"auto_align", e_sf_attr_pm_auto_align}, {"initial_align", e_sf_attr_pm_initial_align}, {"seconds_on_align", e_sf_attr_pm_seconds_on_align}, {"align_start_time", e_sf_attr_pm_last_align_start_time}, {"align_start_trigger", e_sf_attr_pm_last_align_start_trigger}, {"align_start_azimuth", e_sf_attr_pm_last_align_start_azimuth}, {"align_start_elevation", e_sf_attr_pm_last_align_start_elevation}, {"align_start_rssi", e_sf_attr_pm_last_align_start_rssi}, {"align_start_ber", e_sf_attr_pm_last_align_start_ber}, {"align_end_time", e_sf_attr_pm_last_align_end_time}, . . On 11/5/09 4:15 PM, "Beau Wilkinson" <b...@mtllc.us> wrote: > I really think this warrants further discussion. Perhaps the correct answer > (that ARMs implement a non-standard FP type which is incompatible with Sqlite) > is already out there, but I think the issues I raised with that answer should > at least be addressed. > > Assuming (and perhaps this is the rub...) that Sqlite is built around C++ > "float" and "double," then I fail to see how any FP system that is even > plausibly useful could give the results cited by Mr Drozd. If I put (for > example) the value 100.0 into a "double," and then transport or store/retrieve > the binary representation somehow, and then take those bits and once more > treat them as a "double," then I ought to get 100 (or at least something very, > very close). These are the sorts of things that Sqlite should, to my mind at > least, be doing with real number data, and it ought not to matter what the > underlying representation is. > > And yet it has been put forth in this forum that such is not the case. Rather, > the underlying representation must comply with the IEEE FP standard, or even > basic operations will not work. And this is so certain, well-known, and > reasonable that discussion amongst the plebians is not warranted. > > How is this possible architecturally? The only explanation I can fathom is > that Sqlite depends on the underlying representation following the IEEE > standard at the bit level. For example, when doing sorts, maybe Sqlite is > assuming the mantissae and exponents are in the bit ranges specified by IEEE, > and that they are represented in the specified format (e.g. excess vs. > complement notation) as well. > > If this is indeed the case, I think this is a very misguided architecture. > Depending on the bit-level representation is bad. It's a brittle design. Of > course, it's easy for you all to intimidate anyone who has a problem with this > architecture... the complainer is "not in compliance with the IEEE standard" > and is thus clearly worthy of your speedy dismissal. Bah. > > Ultimately, I think this is an easy excuse for a bad design. Types like > "float" and "double" are intended by their designers to abstract over many FP > implementations. They are not just convenient macros from IEEE FP, nor should > they be. > > I could go on to take issue with the IEEE standard itself. The allocation of > bits to exponent-versus-mantissa is rigid, for example. IEEE makes no > allowance (that I know of) for allowing a tradeoff between precision and > dynamic range, which is a major oversight for such a widely-used standard. > Until very recently IEEE FP included no support for 16-bit (half precision) > data. IEEE was also designed by committee so it includes all sorts of > nice-to-have pet features (two zeros, distinct error and condition codes, > etc.) which may or may not be worthwhile on any given real-world system. (I > tend to lean toward the "may not" direction). > > But whether IEEE is bad or good or indifferent makes no difference- the > standard should not, in my opinion, be built into Sqlite. Basic software > engineering sense must still trump even the best standard. > > Forgive me if I have missed something here, but this seems like what I would > call "Standardizationism" run amok. > > ________________________________________ > From: Beau Wilkinson > Sent: Wednesday, November 04, 2009 9:39 AM > To: General Discussion of SQLite Database > Cc: Alexander Drozd > Subject: RE: [sqlite] SQLite on PocketBook > >> I'm guessing that your hardward does not implement IEEE 754 floating >> point correctly. We've seen that sort of thing before, especially >> with GCC. There are some options to GCC (which escape my memory right >> now) that can force it to use strict IEEE 754 floating point rather >> than its preferred, speedier but non-standard alternative. > > What he's getting back is so far from correct, though, that I would tend to > blame a run-of-the-mill bug rather than some point-of-detail. Non-IEEE > floating point often sacrifices things like the distinctions between > "Not-a-Number" and "Infinity," or the difference between positive and negative > zero, and so on. Perhaps in some cases the rounding of the last bit is wrong. > But no FP system should give results that are flat out wrong, especially when > doing arithmetic. (I can see where series of operations involving exponents > &c. might get way out-of-line but I don't think Sqlite is doing any of these > things.) > > What he is getting back looks like Double.MaxVal... is there a divide-by-zero > somewhere? That is the sort of thing that different FP specs will legimately > handle differently. > ________________________________________ > From: sqlite-users-boun...@sqlite.org [sqlite-users-boun...@sqlite.org] On > Behalf Of D. Richard Hipp [...@hwaci.com] > Sent: Wednesday, November 04, 2009 9:26 AM > To: General Discussion of SQLite Database > Cc: Alexander Drozd > Subject: Re: [sqlite] SQLite on PocketBook > > On Nov 4, 2009, at 4:53 AM, Alexander Drozd wrote: >> >> My name is Alexander. I am working on an open-source spaced- >> repetition software project (http://code.google.com/p/pbanki/). My >> software relies on SQLite library. I came across some bug-like >> problems with running SQLite on a low-memory e-ink reader device. I >> am very sorry to bother you, but I tried to submit my problem to >> the bugtracker at the SQLite site, and for some reason anonymous >> login failed. >> >> The problem appears at the point of reading real values from an >> SQLite database. I created a simple database >> >> CREATE TABLE cards ( >> text TEXT NOT NULL, >> value REAL NOT NULL >> ); >> >> I also tried to use NUMERIC and FLOAT instead of REAL. Then I >> inserted a few values: >> >> INSERT INTO cards VALUES('second',100.1); >> INSERT INTO cards VALUES('first', 100.0); >> >> Then I execute "select * from cards order by due" query with sample >> code from http://www.sqlite.org/quickstart.html It works perfectly >> when compiled on desktop computer, but fails on target device. The >> device is PocketBook301+ (http://pocketbook.com.ua/). Unfortunately >> their site does not have an English version. This device is based on >> Samsung S3C2440 AL-40 CPU. It runs under open-source firmware called >> pocketbookfree, that is based on Linux 2.6.18.2 armv4tl. >> >> The above query run on pocketbook returns corrupted values for >> floats if they have a non-zero fractional part: >> >> text = first >> val = 100.0 >> >> text = second >> val = 1.90359837350824e+185 >> >> Sorting by columns containing float numbers also fails when >> specified with ORDER BY. I am not sure whether this is an issue with >> SQLite or with cross-compiler for PocketBook, but I would greatly >> appreciate any suggestions on how to treat this problem. > > > I'm guessing that your hardward does not implement IEEE 754 floating > point correctly. We've seen that sort of thing before, especially > with GCC. There are some options to GCC (which escape my memory right > now) that can force it to use strict IEEE 754 floating point rather > than its preferred, speedier but non-standard alternative. > > > D. Richard Hipp > d...@hwaci.com > > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > The information contained in this e-mail is privileged and confidential > information intended only for the use of the individual or entity named. If > you are not the intended recipient, or the employee or agent responsible for > delivering this message to the intended recipient, you are hereby notified > that any disclosure, dissemination, distribution, or copying of this > communication is strictly prohibited. If you have received this e-mail in > error, please immediately notify the sender and delete any copies from your > system. > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users