logically speaking constants are faster. If you see DATA_DIR in code you haven't edited in a while you'll know it's defined in your globals file and be able to locate it quickly. However if you see $data_dir that could have been defined anywhere and finding it will be more difficult.
Also there is this tidbit from the manual
Like superglobals, the scope of a constant is global. You can access constants anywhere in your script without regard to scope. For more information on scope, read the manual section on variable scope.
so if you're using it in a function there is no need for passing a parameter or using the global declaration, which should nominaly speed execution.