<font face="Arial, Verdana">The function is called every 100ms if possible. So 0.1 is correct.</font>
The D term uses temperature change per second. As you see it computes a difference between 2 temperatures. One is inside an array of length 4 an dit points to the value 0.3s before. So multiplying with 3.333 gives change per second. Reason to use 0.3s distance is to get a more stable result then change between last measurement. Measurement errors get here a much to big impact.
Regarding overshoot, calibration is supposed to have that. See Extruder.cpp where values get computated:
<font face="Arial, Verdana"> Kp = 0.6Ku;</font>
<font face="Arial, Verdana"> Ki = 2*Kp/Tu;</font>
<font face="Arial, Verdana"> Kd = KpTu0.125;</font>
<font face="Arial, Verdana"> Com::printFLN(Com::tAPIDClassic);</font>
<font face="Arial, Verdana"> Com::printFLN(Com::tAPIDKp,Kp);</font>
<font face="Arial, Verdana"> Com::printFLN(Com::tAPIDKi,Ki);</font>
<font face="Arial, Verdana"> Com::printFLN(Com::tAPIDKd,Kd);</font>
<font face="Arial, Verdana"> /</font>
<font face="Arial, Verdana"> Kp = 0.33*Ku;</font>
<font face="Arial, Verdana"> Ki = Kp/Tu;</font>
<font face="Arial, Verdana"> Kd = KpTu/3;</font>
<font face="Arial, Verdana"> OUT_P_LN(" Some overshoot");</font>
<font face="Arial, Verdana"> OUT_P_F_LN(" Kp: ",Kp);</font>
<font face="Arial, Verdana"> OUT_P_F_LN(" Ki: ",Ki);</font>
<font face="Arial, Verdana"> OUT_P_F_LN(" Kd: ",Kd);</font>
<font face="Arial, Verdana"> Kp = 0.2*Ku;</font>
<font face="Arial, Verdana"> Ki = 2Kp/Tu;</font>
<font face="Arial, Verdana"> Kd = Kp*Tu/3;</font>
<font face="Arial, Verdana"> OUT_P_LN(" No overshoot");</font>
<font face="Arial, Verdana"> OUT_P_F_LN(" Kp: ",Kp);</font>
<font face="Arial, Verdana"> OUT_P_F_LN(" Ki: ",Ki);</font>
<font face="Arial, Verdana"> OUT_P_F_LN(" Kd: ",Kd);</font>
<font face="Arial, Verdana"> */</font>
<font face="Arial, Verdana">
</font>
<font face="Arial, Verdana">You see the last set of equations would set it more conservative to have no overshoot.</font>