Passing the variable should be faster.
Values are passed in a way that only requires passing the address of the value and no copy of the value will be made in the routine unless the routine modifies that variable.
On the other hand, "global" has some overhead every time it is encountered, because the symbol table of the global workspace has to be searched at execution time. If the symbol is not found in the global workspace then it has to be created in the global workspace and initialized to the empty matrix. Then the descriptor of the symbol that was found or the descriptor of the newly-created symbol has to be imported to the function workspace, marked so that the original memory will not be cleared when the function returns. Even if it is the only global you have, all of this costs overhead that is not present for a variable that is passed in.