请教大家VHDL中信号量给输出进行赋值操作在process内和外是否存在差异?

下面是在网上看到的一个程序(8位d触发器),想请教一下,这个q<=q1是在进程内部进行的,可是看书上好多信号量给输出赋值都是在进程外,这两种方式是否有区别呢,哪种更好方式一些?
我自己的理解,因为赋值是在进程结束后才进行的,如果在进程内赋值的话,相当于多了一条语句,多一条语句会不会导致process执行时间增加?这样会不会增加一些延迟?如果在进程外赋值的话,相当于进程少了一条语句,进程运行的更快一些,同时在外面赋值是并行的,也就是进程结束后,立马执行q<=q1。不知道我的理解是否有问题,所以想来请教一下大家。另外一个问题是下面这个程序为啥要加一个中间信号量q1啊,直接用q不行吗?

entity dff8 is
port (clk,clr:in std_logic;
d:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
end dff8;
architecture bhv of dff8 is
signal q1:STD_LOGIC_VECTOR(7 DOWNTO 0) :="00000000";
begin
process(clk,clr,q1)
begin
if clr = '1' then
q1<= "00000000";
elsif clk'event and clk='1' then
q1<=d;
end if ;
q<=q1;
end process ;
end bhv

首先需要肯定的是,直接用 q 与 多加个 q<=q1 是一样的,编译出来的结果没有任何差异。
可以这样理解 q<=q1 只是内部一条线,不增加时间也不增加资源。不影响 process 执行时间增加,也不会增加延迟。
为什么这样用 q<=q1 ?
个人习惯,代码风格,都有可能。
我也常这么用。主要是我写的一些代码的接口和这个模块的接口不一样,代码拷过来不想改,加一些这样的线让接口一致,不影响性能、资源、速度等。