Question about PID control loop timing
1st write a spec with the Current vs acceleration vs RPM then repeat with an inertial load as the optimal PID parameters will change especially with reverse.   Create an algorithm for it.
Also determine the power dissipation for such duty cycles of acceleration and create an algorithm for that. You ought to know that no-load = kV or RPM/V is a constant and current is proportional to force of acceleration which depends on load and there is a stall stiction start current.
You those two feedbacks with your encoder velocity and current feedback to create two loops and determine the error with your target profile and use PID feedback to optimize stability and minimize 1 or more parameter choices. Eg. Max/rated current, seek time, etc.  So the signal bandwidth changes and the error tolerance on each control variable including overshoot and settling time are your specs. The lighter the load, the more bandwidth from faster response and samples per second you will need to support the dynamic range of speed control and tolerance error.
BW=0.35/Tr 10~90z handles only 3dB of BW but your step changes might span from 3 dB to 20 dB or more, thus depending on your goal to make the fastest settling (Tbd BW) time with minimal TBD overshoot determines your sampling rate.
car wheel magnetic speed sensors for example using Infineon IC measures velocity from 0.5 to over 150 kph for smart cornering and braking with something like 100 magnets per rev as the wheel encoder which is excessive at high RPM but this is how it measure speed. So the LSB’s are truncated at low speed and DSP interpolates with a Biphase digital output in addition with the ~ 100ish pulses per rev. the ECU handles all the PID etc.
You might want to be more ambitious in Your project.
p.. don’t use a BJT driver, use a Full bridge NCh driver that can handle your motor. Like an Arduino  CNC shield. Look for PMIC software.