Devart Blog

Tips and Tricks

Increasing SQLite Performance

Posted by on December 21st, 2015

One the major issues a developer encounters when using the SQLite DBMS in his applications is its performance issue.

Perhaps, a classic case everyone gets into when using SQLite for the first time is very slow execution of multiple INSERT/UPDATE/DELETE operations. Indeed, sequential executions of not even thousands, but hundreds of INSERTs into a table may take too long.
The origin of the issue lies in the specificity of using transactions in SQLite. SQLite starts a transaction automatically every time before any DML statement execution and commits it after execution. Accordingly, when executing multiple consequent statements, a new transaction will be started and committed for each statement.

The solution of this problem is quite simple — the block of DML statements may be enclosed into BEGIN … END operators block ( http://www.sqlite.org/lang_transaction.html ). In this case, each DML statement won’t be executed in a separate transaction, but a single transaction will be started before the whole block execution and committed after all modifications.

Such an approach increases SQLite data modification performance by times. See more details about it in the SQLite documentation ( http://www.sqlite.org/faq.html#q19 ).

However, this approach is not the only way to increase performance in SQLite. Parameters of the DBMS may also be configured using so-called PRAGMA ( http://www.sqlite.org/pragma.html ). The fact is that SQLite parameters are oriented not to high performance by default, but to maximum data safety and integrity. Modification of these parameters may increase performance, however, note, that the data corruption risks increase too.

Let’s analyze the impact to inserts performance by different PRAGMAs using LiteDAC. (more…)

Resolving RAD Studio XE7 Update 1 and RAD Studio XE8 Installation Crash

Posted by on April 21st, 2015

Since RAD Studio XE7 Update 1 was released, the ETTracker.dll library was added to installation. Its purpose is obscure, but its presence in the installation caused serious problems for Windows XP users when installing RAD Studio XE7 Update 1. (more…)

Agile Code Review Process with Review Assistant

Posted by on October 9th, 2013

Summary: This article describes a scenario of Review Assistant usage in agile development process. The peculiarity of this scenario is that every team member is allowed to join a code review.

Some time ago we received the following question through our technical support:

Hi guys!
Our company is currently evaluating Review Assistant, we are using ‘Simple review workflow’ in our project.
The issue is there is no way to create review without assigning a reviewer to it. This doesn’t allow us to use agile process, when anyone who is available can join a review.
Is there any way to create review in current version?

(more…)

How to Debug Android Apps via Wi-Fi in RAD Studio XE5

Posted by on October 2nd, 2013

The top news of the Embarcadero company in 2013, as well as the direct reason for RAD Studio XE5 release, was certainly support for Android. Android is now of rather great interest for programmers, therefore its support in the Embarcadero’s product in a certain way increased activity in the Delphi community.

With the release of ХЕ5, in a variety of specialized blogs, there appeared publications concerning development of “my first application” for the new platform, in which it is described in details how to create, run, and debug a project. Due to the specifics of the products produced by our company, while preparing for the recent release, we were most interested in the debug process, some peculiarities of which we want to discuss here. (more…)

Delphi XE2 FireMonkey HD Applications Raise Runtime Error 231 on Mac OS X

Posted by on October 5th, 2011

Many users have encountered the problem when running FireMonkey HD Applications on Mac OS X without 3D hardware HAL. When this application is run, it either freezes or produces the following error:

Runtime error 231 at 000169AD

We have researched this problem and found a solution from Embarcadero. If a Mac OS X computer has no 3D hardware HAL, you need to set the global variable FMX.Types.GlobalUseHWEffects to False. Example:

begin
  FMX.Types.GlobalUseHWEffects := False;

  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run; 
end;

However, this solution is not a panacea. Sometimes HD Applications continue to freeze or raise the error even with FMX.Types.GlobalUseHWEffects set to False. In this case, you need to modify the FMX.Filter.pas unit. Do the following: (more…)